顶部框架设计
JFrame 界面标题
JFrame f = new JFrame("测试Swing基本组件");
JMenuBar 声明(菜单栏)相关组件
名称 | 说明 |
---|---|
JMenuBer | 创建一个菜单栏 |
JMenu | 创建一级菜单栏 |
menuBar.add(变量) | 一级菜单添加到菜单栏 |
JMenuItem | 创建 “编辑” 一级菜单的子菜单 |
fileMenu.add(变量); | 子菜单添加到一级菜单 |
fileMenu.addSeparator() | 添加一条分割线 |
# 创建一个菜单栏
JMenuBar menuBar = new JMenuBar();
# 创建一级菜单
JMenu fileMenue = new JMenu("文件");
JMenu editMenue = new JMenu("编辑");
JMenuItem auto = new JMenuItem("自动换行");
JMenuItem copy = new JMenuItem("复制");
JMenuItem paste = new JMenuItem("粘贴");
JMenuItem formatMenu = new JMenu("格式");
JMenuItem comment = new JMenuItem("注释");
JMenuItem cancelComment = new JMenuItem("取消注释");
中间框架设计
JTextArea 文本域组件
JTextArea | 说明 |
---|---|
JTextArea() | 创建一个默认的文本域 |
JTextArea(int rows,int columns) | 创建一个具有指定行数和列数的文本域 |
JTextArea(String text) | 创建一个包含指定文本的文本域 |
JTextArea(String text,int rows,int columns) | 创建一个既包含指定文本,又包含指定行数和列数的多行文本域 |
//声明文本域
JTextArea ta = new JTextArea(8, 20);
JList 列表框组件
JList | 说明 |
---|---|
JList() | 构造一个空的只读模型的列表框。 |
JList(ListModel dataModel) | 根据指定的非 null 模型对象构造一个显示元素的列表框。 |
JList(Object[] listData) | 使用 listData 指定的元素构造—个列表框。 |
JList(Vector<?> listData) | 使用 listData 指定的元素构造一个列表框。 |
//声明列表框
String[] colors = {"红色", "绿色", "蓝色"};
JList<String> colorList = new JList<String>(colors);
JComboBox:下拉列表组件
下拉列表的特点是将多个选项折叠在一起,只显示最前面的或被选中的一个
JComboBox | 说明 |
---|---|
JComboBox() | 创建一个空的 JComboBox 对象 |
JComboBox(ComboBoxModel aModel) | 创建一个 JComboBox,其选项取自现有的 ComboBoxModel |
JComboBox(Object[] items) | 创建包含指定数组中元素的 JComboBox |
JComboBox<String> colorSelect = new JComboBox<String>();
ButtonGroup 按钮组
ButtonGroup bg = new ButtonGroup();
JRadioButton 单选框
JRadioButton male = new JRadioButton("男", false);
JRadioButton female = new JRadioButton("女", true);
JCkeckBox 复选框
JCheckBox isMarried = new JCheckBox("是否已婚?", true);
底部框架设计
JTextField:单行文本框组件
原文链接
中使用 JTextField 类实现一个单行文本框,它允许用户输入单行的文本信息
JTextField | 说明 |
---|---|
JTextField() | 创建一个默认的文本框 |
JTextField(String text) | 创建一个指定初始化文本信息的文本框 |
JTextField(int columns) | 创建一个指定列数的文本框 |
JTextField(String text,int columns) | 创建一个既指定初始化文本信息,又指定列数的文本框 |
JTextField tf = new JTextField(40);
JButton:按钮组件
原文链接
按钮是图形界面上常见的元素,在前面已经多次使用过它。在 Swing 中按钮是 JButton 类的对象,JButton 类的常用构造方法如下
JButton | 说明 |
---|---|
JButton() | 创建一个无标签文本、无图标的按钮。 |
JButton(Icon icon) | 创建一个无标签文本、有图标的按钮。 |
JButton(String text) | 创建一个有标签文本、无图标的按钮。 |
JButton(String text,Icon icon) | 创建一个有标签文本、有图标的按钮。 |
JButton ok = new JButton("确定");
右键菜单框架设计
JPopupMenu 右键菜单
原文链接
弹出菜单是一个可弹出并显示一系列选项的悬浮小窗口。在实际应用中通常通过单击鼠标右键触发弹出显示
JPopupMenu jPopupMenu = new JPopupMenu();
ButtonGroup poupButtonBg = new ButtonGroup();
JRadioButtonMenuItem 包含在菜单中的复选框
原文链接
JRadioButtonMenuItem类表示可以包含在菜单中的复选框。选中菜单中的复选框可将控件的状态从打开更改为关闭或从关闭更改为打开
JRadioButtonMenuItem metalItem = new JRadioButtonMenuItem(" Metal 风格");
JRadioButtonMenuItem nimbusItem = new JRadioButtonMenuItem("Nimbus 风格");
JRadioButtonMenuItem windowsItem = new JRadioButtonMenuItem("Windows 风格");
JRadioButtonMenuItem windowsClassicItem = new JRadioButtonMenuItem("Windows 经典风格");
JRadioButtonMenuItem motifItem = new JRadioButtonMenuItem("Motif 风格");
初始化界面
一个初始化方法 public 说明 是公用的
,void说明没返回值
,init是方法名 ()
里面是参数列表
。这里没有参数
public void init() {
}
组装底部
原文链接
JPanel 面板
JPanel
是一种中间层容器,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用。JPanel 类的构造方法如下。
JPanel():使用默认的布局管理器创建新面板,默认的布局管理器为 FlowLayout。
JPanel(LayoutManagerLayout layout):创建指定布局管理器的 JPanel 对象。
public void init() {
//组装视图
//组装底部
JPanel bottomPanel = new JPanel();
bottomPanel.add(tf);
bottomPanel.add(ok);
//BorderLayout.SOUTH 边界布局。南方
f.add(bottomPanel, BorderLayout.SOUTH);
组装选择相关的组件
//组装选择相关的组件
JPanel selectPanel = new JPanel();
//colorSelect.addItem 颜色选择。增加列表项
colorSelect.addItem("红色");
colorSelect.addItem("绿色");
colorSelect.addItem("蓝色");
//selectPanel 选择面板
selectPanel.add(colorSelect);
bg.add(male);
bg.add(female);
//JPanel 默认位置中间
selectPanel.add(male);
selectPanel.add(female);
selectPanel.add(isMarried);
组装文本域和选择相关组件
createHorizontalBox()
创建一个从左到右显示其组件的 Box。
Box容器垂直排列
Box topLeft = Box.createVerticalBox();
topLeft.add(ta);
topLeft.add(selectPanel);
组装顶部
Box top = Box.createHorizontalBox();
top.add(topLeft);
top.add(colorList);
f.add(top);
组装顶部菜单
formatMenu.add(comment);
formatMenu.add(cancelComment);
editMenue.add(auto);
editMenue.addSeparator();
editMenue.add(copy);
editMenue.add(paste);
editMenue.addSeparator();
editMenue.add(formatMenu);
menuBar.add(fileMenue);
menuBar.add(editMenue);
f.setJMenuBar(menuBar);
组装右键菜单
poupButtonBg.add(metalItem);
poupButtonBg.add(nimbusItem);
poupButtonBg.add(windowsItem);
poupButtonBg.add(windowsClassicItem);
poupButtonBg.add(motifItem);
//ActionListener 监听器
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//当前选择的是哪一个风格
String actionCommand = e.getActionCommand();
try {
changeFlavor(actionCommand);
}catch (Exception ex){
ex.printStackTrace();
}
}
};
metalItem.addActionListener(listener);
nimbusItem.addActionListener(listener);
windowsItem.addActionListener(listener);
windowsClassicItem.addActionListener(listener);
motifItem.addActionListener(listener);
jPopupMenu.add(metalItem);
jPopupMenu.add(nimbusItem);
jPopupMenu.add(windowsItem);
jPopupMenu.add(windowsClassicItem);
jPopupMenu.add(motifItem);
不需要在监听鼠标事件了
ta.setComponentPopupMenu(jPopupMenu);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
public static void main(String[] args) {
new SwingComponentDemo().init();
}
定义一个方法,用于改变界面风格
private void changeFlavor(String command) throws Exception{
switch (command){
case "Metal 风格":
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
break;
case "Nimbus 风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
break;
case "Windows 风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
break;
case "Windows 经典风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
break;
case "Motif 风格":
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
break;
}
刷新组件的外观
SwingUtilities.updateComponentTreeUI(f.getContentPane());
SwingUtilities.updateComponentTreeUI(menuBar);
SwingUtilities.updateComponentTreeUI(jPopupMenu);
}
}