Java Swing详细操作

顶部框架设计

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);
    }
}
  • 7
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joel Jin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值