Java Swing GUI编程:JMenuBar、JTextField、JPasswordField与JTextArea使用指南

陆景行
陆景行
发布时间:2026-10-15| 3人浏览过
原创

在Java图形用户界面(GUI)开发中,Swing库提供了丰富的控件来满足交互需求。本文重点讲解四大核心组件的用法:用于导航的 JMenuBar 及其多级结构,用于数据输入的 JTextField 和 JPasswordField,以及用于内容展示的 JTextArea。通过具体的构造参数设置和代码示例,展示如何灵活控制外观与行为。

第一:构建一级菜单结构

菜单栏是桌面应用程序顶部的主导航区域。其层级关系为:JMenuBar(菜单条)包含 JMenu(菜单),而 JMenu 又包含 JMenuItem(菜单项)。

第1步:初始化窗口与菜单条

首先创建一个继承自 JFrame 的窗口,实例化一个 JMenuBar 对象。设置窗口的布局管理器(如 FlowLayout)以便正确显示组件。

第2步:定义菜单与菜单项

创建 JMenu 对象并指定标题(例如“菜单一”)。接着创建多个 JMenuItem 对象作为选项(如“选项1”、“选项2”等)。将菜单项添加到对应的菜单中,再将菜单添加到菜单条上。

第3步:组装并显示窗口

将构建好的菜单条添加到窗口的顶部容器中。设置窗口大小、位置,并设为可见。最后配置关闭操作(如 EXIT_ON_CLOSE)以确保程序正常退出。

import javax.swing.*;
import java.awt.*;

public class Jmenu {
    public static void main(String[] args){
        // 1. 创建主窗口
        JFrame jf = new JFrame("JMenu");
        jf.setBounds(400, 300, 400, 200);
        jf.setLayout(new FlowLayout(FlowLayout.CENTER));
        
        // 2. 创建菜单条、菜单和菜单项
        JMenuBar bar = new JMenuBar();
        JMenu menu = new JMenu("菜单一");
        JMenuItem item = new JMenuItem("选项1");
        JMenuItem item2 = new JMenuItem("选项2");
        JMenuItem item3 = new JMenuItem("选项3");
        
        // 3. 建立层级关系
        menu.add(item);
        menu.add(item2);
        menu.add(item3);
        bar.add(menu);
        
        // 4. 添加到窗口
        jf.add(bar);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

第二:实现多级嵌套菜单

实际应用中常需要更复杂的多级菜单。原理同上,只需创建多个 JMenu 对象,并向其中一个子菜单内再添加新的 JMenu 即可形成下拉 submenu。在下面的示例中,我们在“菜单三”下继续添加子选项,展示多层级的构建逻辑。

import javax.swing.*;
import java.awt.*;

public class Jmenu {
    public static void main(String[] args){
        JFrame jf = new JFrame("JMenu");
        jf.setBounds(400, 300, 400, 200);
        jf.setLayout(new FlowLayout(FlowLayout.CENTER));
        
        JMenuBar bar = new JMenuBar();
        JMenu menu = new JMenu("菜单一");
        JMenu menu2 = new JMenu("菜单二");
        JMenu menu3 = new JMenu("菜单三");
        
        JMenuItem item = new JMenuItem("选项1");
        JMenuItem item2 = new JMenuItem("选项2");
        JMenuItem item3 = new JMenuItem("选项3");
        JMenuItem item4 = new JMenuItem("选项4");
        JMenuItem item5 = new JMenuItem("选项5");
        JMenuItem item6 = new JMenuItem("选项6");
        
        menu.add(item);
        menu.add(item2);
        menu.add(item3);
        menu2.add(item4);
        menu3.add(item5);
        menu3.add(item6);
        
        bar.add(menu);
        bar.add(menu2);
        bar.add(menu3);
        
        jf.add(bar);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

多级菜单的结构示例如下:

第三:使用单行文本框 JTextField

JTextField 是最基础的单行文本输入组件。它允许用户在界面中输入短文本信息。该类提供了多种构造函数来灵活定义初始状态。

构造参数说明

  • new JTextField():创建空文本框。
  • new JTextField(String text):指定初始显示的文本。
  • new JTextField(int fieldWidth):指定文本框的列宽(注意:列宽并非像素,而是基于平均字符宽度的估算单位)。
  • new JTextField(String text, int fieldWidth):同时指定初始文本和列宽,这是最常用的形式。

第1步:实例化并设置属性

创建一个窗口,实例化 JTextField,传入预设文字“请输入”和长度20。将该文本框添加到窗体容器中,使窗口可见。

import javax.swing.*;
import java.awt.*;

public class JtextField {
    public static void main(String[] args){
        JFrame jf = new JFrame("JTextFiled");
        jf.setLayout(new FlowLayout(FlowLayout.CENTER));
        jf.setBounds(400, 300, 400, 300);
        
        // 创建带有默认文字和固定宽度的文本框
        JTextField text = new JTextField("请输入", 20);
        jf.add(text);
        
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

第四:配置密码输入框 JPasswordField

用于处理敏感信息的 JPasswordField 继承自 JTextField。其核心特性是隐藏输入内容,防止旁人窥视。默认情况下,它使用黑点或星号遮罩输入字符。

常用方法与构造

构造方式与 JTextField 类似。此外,可使用 setEchoChar(char c) 方法自定义回显字符。例如传入 '*' 可强制显示星号掩码。

第1步:创建标签与密码框

创建一个带有“密码”提示的标签 JLabel,并实例化 JPasswordField。将两者按顺序添加到采用 FlowLayout.LEFT 布局的窗口左侧对齐位置。

import javax.swing.*;
import java.awt.*;

public class JpasswordField{
    public static void main(String[] args){
        JFrame jf = new JFrame("Password Demo");
        jf.setLayout(new FlowLayout(FlowLayout.LEFT));
        jf.setBounds(400, 300, 400, 300);
        
        JLabel jl = new JLabel("密码");
        // 创建空密码框,宽度为20
        JPasswordField password = new JPasswordField("", 20);
        
        jf.add(jl);
        jf.add(password);
        
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

第五:使用多行文本域 JTextArea

当需要录入或展示大量文本时,JTextArea 是多行编辑器。与单行文本框不同,它可以在垂直方向扩展以容纳更多内容。默认情况下,文本不会自动换行,超出边界会被截断隐藏。

关键功能设置

  • setLineWrap(boolean wrap):启用自动换行功能,使长文本在当前行末尾自动折行。
  • 构造函数通常接受行数(rows)和列数(cols)参数来定义组件的首选尺寸。

第1步:定义文本域并启用换行

在窗口中添加一个大小为20行10列的文本域,调用 setLineWrap(true) 开启换行支持。这样用户输入的长段落会自动适应窗口宽度。

import javax.swing.*;
import java.awt.*;

public class JtextArea {
    public static void main(String[] args) {
        JFrame jf = new JFrame("JTextArea");
        jf.setLayout(new FlowLayout(FlowLayout.LEFT));
        jf.setBounds(400, 300, 400, 300);
        
        JTextArea area = new JTextArea(20, 10);
        // 设置自动换行
        area.setLineWrap(true);
        
        jf.add(area);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

以上就是Java Swing菜单栏、文本框、密码框及文本域组件的详细使用方法,更多关于Java GUI开发的技巧请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。