zoukankan      html  css  js  c++  java
  • learning java swing 基本组件用法

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionListener;
    import java.awt.event.InputEvent;
    
    public class SwingComponent {
        JFrame f = new JFrame("test");
        Icon okIcon = new ImageIcon("ico/ok.png");
    
        JButton ok = new JButton("确认", okIcon);
    
        JRadioButton male  = new JRadioButton("", true);
        JRadioButton female = new JRadioButton("", false);
    
        ButtonGroup bg = new ButtonGroup();
    
        JCheckBox married =  new  JCheckBox("是否已婚", false);
    
        String[]  colors = new String[]{"红色","绿色","蓝色"};
    
        JComboBox<String>  colorChooser = new JComboBox<>(colors);
    
        JList<String> colorList = new JList<>(colors);
    
        JTextArea ta  = new JTextArea(8, 20);
    
        JTextField name = new JTextField(40);
    
        JMenuBar mb = new JMenuBar();
    
        JMenu file = new JMenu("文件");
    
        JMenu edit = new JMenu("编辑");
    
        Icon newIcon  =  new ImageIcon("ico/new.png");
        JMenuItem newItem = new JMenuItem("新建", newIcon);
    
        Icon saveIcon = new ImageIcon("ico/save.png");
        JMenuItem saveItem = new JMenuItem("保存", saveIcon);
    
        Icon exitIcon = new ImageIcon("ico/exit.png");
        JMenuItem exitItem = new JMenuItem("退出",exitIcon);
    
        JCheckBoxMenuItem autoWrap = new JCheckBoxMenuItem("自动换行");
    
        JMenuItem copyItem  = new JMenuItem("复制", new ImageIcon("ico/copy.png"));
    
        JMenuItem pasteItem  = new JMenuItem("粘贴", new ImageIcon("ico/paste.png"));
    
        JMenu format = new JMenu("格式");
    
        JMenuItem commentItem  = new JMenuItem("注释");
        JMenuItem cancelItem = new JMenuItem("取消注释");
    
        JPopupMenu pop  = new JPopupMenu();
    
        ButtonGroup flavorGroup = new ButtonGroup();
    
        JRadioButtonMenuItem metalItem  = new JRadioButtonMenuItem("Metal风格", true);
        JRadioButtonMenuItem nimbusItem = new JRadioButtonMenuItem("Nimbus风格");
        JRadioButtonMenuItem windowsItem  = new JRadioButtonMenuItem("Windows风格");
        JRadioButtonMenuItem classicItem = new JRadioButtonMenuItem("Windows经典风格");
        JRadioButtonMenuItem motifItem  = new JRadioButtonMenuItem("Motif风格");
    
    
        public void  init(){
            var botton = new JPanel();
            botton.add(name);
            botton.add(ok);
            f.add(botton, BorderLayout.SOUTH);
    
            var checkPannel  = new JPanel();
            checkPannel.add(colorChooser);
            checkPannel.add(male);
            checkPannel.add(female);
            checkPannel.add(married);
            bg.add(male);
            bg.add(female);
    
            var topLeft = Box.createVerticalBox();
            var taJsp = new JScrollPane(ta);
            topLeft.add(taJsp);
            topLeft.add(checkPannel);
    
            var top  = Box.createHorizontalBox();
    
            top.add(topLeft);
            top.add(colorList);
            f.add(top);
    
            newItem.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_DOWN_MASK));
            newItem.addActionListener(e -> ta.append("用户单击了 新建 菜单"));
    
            file.add(newItem);
            file.add(saveItem);
            file.add(exitItem);
    
            edit.add(autoWrap);
            edit.addSeparator();
            edit.add(copyItem);
            edit.add(pasteItem);
    
            commentItem.setToolTipText("将程序代码注释起来");
    
            format.add(commentItem);
            format.add(cancelItem);
    
            edit.add(new JMenuItem("-"));
            edit.add(format);
    
            mb.add(file);
            mb.add(edit);
    
            f.setJMenuBar(mb);
    
            flavorGroup.add(metalItem);
            flavorGroup.add(nimbusItem);
            flavorGroup.add(windowsItem);
            flavorGroup.add(classicItem);
            flavorGroup.add(motifItem);
    
            pop.add(metalItem);
            pop.add(nimbusItem);
            pop.add(windowsItem);
            pop.add(classicItem);
            pop.add(motifItem);
    
            ActionListener flavorListener = e -> {
              try {
                  switch (e.getActionCommand()){
                      case "Metal风格":
                          changeFlavor(1);
                          break;
                      case "Nimbus风格":
                          changeFlavor(2);
                          break;
                      case "Windows风格":
                          changeFlavor(3);
                          break;
                      case "Windows经典风格":
                          changeFlavor(4);
                          break;
                      case "Motif风格":
                          changeFlavor(5);
                          break;
    
                  }
              } catch (IllegalAccessException ex) {
                  ex.printStackTrace();
              } catch (InstantiationException ex) {
                  ex.printStackTrace();
              } catch (UnsupportedLookAndFeelException ex) {
                  ex.printStackTrace();
              } catch (ClassNotFoundException ex) {
                  ex.printStackTrace();
              }
            };
    
            metalItem.addActionListener(flavorListener);
            nimbusItem.addActionListener(flavorListener);
            windowsItem.addActionListener(flavorListener);
            classicItem.addActionListener(flavorListener);
            motifItem.addActionListener(flavorListener);
            ta.setComponentPopupMenu(pop);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    
            f.pack();
            f.setVisible(true);
        }
    
        private void changeFlavor(int flavor) throws ClassNotFoundException, UnsupportedLookAndFeelException, InstantiationException, IllegalAccessException {
    
            switch (flavor){
                case 1:
                    UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                    break;
                case 2:
                    UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
                    break;
                case 3:
                    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                    break;
                case 4:
                    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
                    break;
                case 5:
                    UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
                    break;
            }
    
            SwingUtilities.updateComponentTreeUI(f.getContentPane());
            SwingUtilities.updateComponentTreeUI(mb);
            SwingUtilities.updateComponentTreeUI(pop);
        }
    
        public static void main(String[] args) {
            new SwingComponent().init();
        }
    
    }

    output:

  • 相关阅读:
    VMware workstation中安装Ubuntu18.04server
    python一行命令安装chromedriver
    vim配置&相关问题
    博客园美化
    期望DP——HDU4035Maze
    [学习笔记]虚树
    线段树——51nod1593&CF515E 公园晨跑
    [STL] multiset
    [学习笔记] 线性基
    泛化物品优化树型DP——[HAOI2010]软件安装
  • 原文地址:https://www.cnblogs.com/lianghong881018/p/11289061.html
Copyright © 2011-2022 走看看