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);
    }
}
相关推荐
2301_780789664 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
第九序言T5 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
学长毕设5 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
步行cgn6 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川6 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵6 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
程序喵大人6 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
秋天的怀念_David6 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1007 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin7 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php