Java Swing GUI编程:JMenuBar、JTextField、JPasswordField与JTextArea使用指南
在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开发的技巧请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









