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);
    }
}
相关推荐
麦兜*1 小时前
Spring Boot 企业级动态权限全栈深度解决方案,设计思路,代码分析
java·spring boot·后端·spring·spring cloud·性能优化·springcloud
序属秋秋秋1 小时前
《C++初阶之内存管理》【内存分布 + operator new/delete + 定位new】
开发语言·c++·笔记·学习
ruan1145142 小时前
MySQL4种隔离级别
java·开发语言·mysql
quant_19863 小时前
R语言如何接入实时行情接口
开发语言·经验分享·笔记·python·websocket·金融·r语言
Hellyc6 小时前
基于模板设计模式开发优惠券推送功能以及对过期优惠卷进行定时清理
java·数据库·设计模式·rocketmq
lifallen6 小时前
Paimon LSM Tree Compaction 策略
java·大数据·数据结构·数据库·算法·lsm-tree
hdsoft_huge6 小时前
SpringBoot 与 JPA 整合全解析:架构优势、应用场景、集成指南与最佳实践
java·spring boot·架构
百锦再7 小时前
详细解析 .NET 依赖注入的三种生命周期模式
java·开发语言·.net·di·注入·模式·依赖
程序员的世界你不懂7 小时前
基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(2)对框架加入业务逻辑层
java·selenium·maven
风吹落叶花飘荡7 小时前
2025 Next.js项目提前编译并在服务器
服务器·开发语言·javascript