Java图形化界面基本案例

案例:

java 复制代码
public class exer1 {
    JFrame s=new JFrame("练习");

    //菜单
    JMenuBar jMenuBar=new JMenuBar();
    JMenu wenjian=new JMenu("文件");
    JMenu bianji=new JMenu("编辑");

    JMenuItem zidong=new JMenuItem("自动换行");
    JMenuItem fuzhi=new JMenuItem("复制");
    JMenuItem zhantie=new JMenuItem("粘贴");

    JMenu geshi=new JMenu("格式");
    JMenuItem zhushi=new JMenuItem("注释");
    JMenuItem quxiao=new JMenuItem("取消注释");

    //文本域
    JTextArea text=new JTextArea(10,30);
    //列表
    String[] ss={"红色","白色","紫色"};
    JList<String> colorlist=new JList<>(ss);
    //组件
    JComboBox<String> colorselect=new JComboBox<>(ss);

    ButtonGroup bg=new ButtonGroup();
    JRadioButton b1=new JRadioButton("男",true);//默认选中
    JRadioButton b2=new JRadioButton("女",false);

    //复选框
    JCheckBox checkBox=new JCheckBox("是否已婚",true);

    //最下方
    JTextField tf=new JTextField(40);
    JButton button=new JButton("确定",new ImageIcon("D:\\idea\\project\\pro1\\exercise1\\src\\ok.png"));

    //声明鼠标右键点击的菜单
    JPopupMenu popupMenu=new JPopupMenu();
    ButtonGroup bb=new ButtonGroup();
    JRadioButtonMenuItem metal=new JRadioButtonMenuItem("metal风格");
    JRadioButtonMenuItem nimbus=new JRadioButtonMenuItem("nimbus风格");
    JRadioButtonMenuItem windows=new JRadioButtonMenuItem("windows风格");
    JRadioButtonMenuItem windoowsclassic=new JRadioButtonMenuItem("windows经典风格");
    JRadioButtonMenuItem motif=new JRadioButtonMenuItem("motif经典风格");

    public void init(){
        //开始组装
        JPanel p1=new JPanel();
        p1.add(tf);
        p1.add(button);
        s.add(p1,BorderLayout.SOUTH);

        //关于选择的组件
        JPanel selectpanel=new JPanel();
        selectpanel.add(colorselect);

        bg.add(b1);
        bg.add(b2);
        selectpanel.add(b1);
        selectpanel.add(b2);
        selectpanel.add(checkBox);

        //文本域和选择相关
        Box topleft=Box.createVerticalBox();
        topleft.add(text);
        topleft.add(selectpanel);
        //组装顶部
        Box top=Box.createHorizontalBox();
        top.add(topleft);
        top.add(colorlist);
        s.add(top);

        //开始组装顶部菜单
        geshi.add(zhushi);
        geshi.add(quxiao);
        bianji.add(zidong);
        //加横线
        bianji.addSeparator();
        bianji.add(fuzhi);
        bianji.add(zhantie);
        //加横线
        bianji.addSeparator();
        bianji.add(geshi);
        jMenuBar.add(wenjian);
        jMenuBar.add(bianji);
        s.setJMenuBar(jMenuBar);

        //组装鼠标右键菜单
        popupMenu.add(metal);
        popupMenu.add(nimbus);
        popupMenu.add(windows);
        popupMenu.add(windoowsclassic);
        popupMenu.add(motif);

        ActionListener listener=new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //当前选择的是哪种风格
                String ss=e.getActionCommand();
                try {
                    change(ss);
                } catch (UnsupportedLookAndFeelException unsupportedLookAndFeelException) {
                    unsupportedLookAndFeelException.printStackTrace();
                } catch (ClassNotFoundException classNotFoundException) {
                    classNotFoundException.printStackTrace();
                } catch (InstantiationException instantiationException) {
                    instantiationException.printStackTrace();
                } catch (IllegalAccessException illegalAccessException) {
                    illegalAccessException.printStackTrace();
                }
            }
        };
        metal.addActionListener(listener);
        nimbus.addActionListener(listener);
        windows.addActionListener(listener);
        windoowsclassic.addActionListener(listener);
        motif.addActionListener(listener);

        popupMenu.add(metal);
        popupMenu.add(nimbus);
        popupMenu.add(windows);
        popupMenu.add(windoowsclassic);
        popupMenu.add(motif);

        //添加在文本区域右键出现菜单,这个不用在判断,直接设置即可
        text.setComponentPopupMenu(popupMenu);

        //关闭程序
        s.setDefaultCloseOperation(3);

        s.pack();
        s.setVisible(true);


    }
    private void change(String command) throws UnsupportedLookAndFeelException, ClassNotFoundException, InstantiationException, IllegalAccessException {
        //定义的这个方法用来改变界面风格
        switch (command){
            case "metal风格":
                UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                break;
            case "nimbus风格":
                UIManager.setLookAndFeel("javax.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(s.getContentPane());
        SwingUtilities.updateComponentTreeUI(popupMenu);
        SwingUtilities.updateComponentTreeUI(jMenuBar);
    }
}
相关推荐
多多*17 分钟前
微服务网关SpringCloudGateway+SaToken鉴权
linux·开发语言·redis·python·sql·log4j·bootstrap
梓仁沐白17 分钟前
【Kotlin】协程
开发语言·python·kotlin
写bug写bug25 分钟前
如何正确地对接口进行防御式编程
java·后端·代码规范
Cyanto36 分钟前
Java并发编程面试题
java·开发语言·面试
海的诗篇_43 分钟前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
在未来等你1 小时前
互联网大厂Java求职面试:AI大模型与云原生技术的深度融合
java·云原生·kubernetes·生成式ai·向量数据库·ai大模型·面试场景
じ☆ve 清风°1 小时前
理解JavaScript中map和parseInt的陷阱:一个常见的面试题解析
开发语言·javascript·ecmascript
sss191s1 小时前
Java 集合面试题从数据结构到 HashMap 源码剖析详解及常见考点梳理
java·开发语言·数据结构
IGP91 小时前
20250606-C#知识:委托和事件
开发语言·c#
LI JS@你猜啊1 小时前
window安装docker
java·spring cloud·eureka