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:

转载于:https://www.cnblogs.com/lianghong881018/p/11289061.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值