[Java] 较复杂的表单设计 →→→→→进入此内容的聊天室

来自 , 2020-09-01, 写在 Java, 查看 139 次.
URL http://www.code666.cn/view/5c50b4df
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. public class SwingComponent
  5. {
  6.         JFrame f = new JFrame("测试");
  7.         Icon okIcon = new ImageIcon("ico/ok.png");
  8.         JButton ok = new JButton("确认" , okIcon);
  9.         JRadioButton male = new JRadioButton("男" , true);
  10.         JRadioButton female = new JRadioButton("女" , false);
  11.         ButtonGroup bg = new ButtonGroup();
  12.         JCheckBox married = new JCheckBox("是否已婚?" , false);
  13.         String[] colors = new String[]{"红色" , "绿色"  , "蓝色"};
  14.         JComboBox<String> colorChooser = new JComboBox<>(colors);
  15.         JList<String> colorList = new JList<>(colors);
  16.         JTextArea ta = new JTextArea(8, 20);
  17.         JTextField name = new JTextField(40);
  18.         JMenuBar mb = new JMenuBar();
  19.         JMenu file = new JMenu("文件");
  20.         JMenu edit = new JMenu("编辑");
  21.         Icon newIcon = new ImageIcon("ico/new.png");
  22.         JMenuItem newItem = new JMenuItem("新建" , newIcon);
  23.         Icon saveIcon = new ImageIcon("ico/save.png");
  24.         JMenuItem saveItem = new JMenuItem("保存" , saveIcon);
  25.         Icon exitIcon = new ImageIcon("ico/exit.png");
  26.         JMenuItem exitItem = new JMenuItem("退出" , exitIcon);
  27.         JCheckBoxMenuItem autoWrap = new JCheckBoxMenuItem("自动换行");
  28.         JMenuItem copyItem = new JMenuItem("复制"
  29.                 , new ImageIcon("ico/copy.png"));
  30.         JMenuItem pasteItem = new JMenuItem("粘贴"
  31.                 , new ImageIcon("ico/paste.png"));
  32.         JMenu format = new JMenu("格式");
  33.         JMenuItem commentItem = new JMenuItem("注释");
  34.         JMenuItem cancelItem = new JMenuItem("取消注释");
  35.         JPopupMenu pop = new JPopupMenu();
  36.         ButtonGroup flavorGroup = new ButtonGroup();
  37.         JRadioButtonMenuItem metalItem = new JRadioButtonMenuItem("Metal风格" , true);
  38.         JRadioButtonMenuItem nimbusItem = new JRadioButtonMenuItem("Nimbus风格");
  39.         JRadioButtonMenuItem windowsItem = new JRadioButtonMenuItem("Windows风格");
  40.         JRadioButtonMenuItem classicItem = new JRadioButtonMenuItem("Windows经典风格");
  41.         JRadioButtonMenuItem motifItem = new JRadioButtonMenuItem("Motif风格");
  42.         public void init()
  43.         {
  44.                 JPanel bottom = new JPanel();
  45.                 bottom.add(name);
  46.                 bottom.add(ok);
  47.                 f.add(bottom , BorderLayout.SOUTH);
  48.                 JPanel checkPanel = new JPanel();
  49.                 checkPanel.add(colorChooser);
  50.                 bg.add(male);
  51.                 bg.add(female);
  52.                 checkPanel.add(male);
  53.                 checkPanel.add(female);
  54.                 checkPanel.add(married);
  55.                 Box topLeft = Box.createVerticalBox();
  56.                 JScrollPane taJsp = new JScrollPane(ta);    
  57.                 topLeft.add(taJsp);
  58.                 topLeft.add(checkPanel);
  59.                 Box top = Box.createHorizontalBox();
  60.                 top.add(topLeft);
  61.                 top.add(colorList);
  62.                 f.add(top);
  63.                 newItem.setAccelerator(KeyStroke.getKeyStroke('N'
  64.                         , InputEvent.CTRL_MASK));    
  65.                 newItem.addActionListener(e -> ta.append("用户单击了“新建”菜单\n"));
  66.                 file.add(newItem);
  67.                 file.add(saveItem);
  68.                 file.add(exitItem);
  69.                 edit.add(autoWrap);
  70.                 edit.addSeparator();
  71.                 edit.add(copyItem);
  72.                 edit.add(pasteItem);
  73.                 commentItem.setToolTipText("将程序代码注释起来!");
  74.                 format.add(commentItem);
  75.                 format.add(cancelItem);
  76.                 edit.add(new JMenuItem("-"));
  77.                 edit.add(format);
  78.                 mb.add(file);
  79.                 mb.add(edit);
  80.                 f.setJMenuBar(mb);
  81.                 flavorGroup.add(metalItem);
  82.                 flavorGroup.add(nimbusItem);
  83.                 flavorGroup.add(windowsItem);
  84.                 flavorGroup.add(classicItem);
  85.                 flavorGroup.add(motifItem);
  86.                 pop.add(metalItem);
  87.                 pop.add(nimbusItem);
  88.                 pop.add(windowsItem);
  89.                 pop.add(classicItem);
  90.                 pop.add(motifItem);
  91.                 ActionListener flavorListener = e -> {
  92.                         try
  93.                         {
  94.                                 switch(e.getActionCommand())
  95.                                 {
  96.                                         case "Metal风格":
  97.                                                 changeFlavor(1);
  98.                                                 break;
  99.                                         case "Nimbus风格":
  100.                                                 changeFlavor(2);
  101.                                                 break;
  102.                                         case "Windows风格":
  103.                                                 changeFlavor(3);
  104.                                                 break;
  105.                                         case "Windows经典风格":
  106.                                                 changeFlavor(4);
  107.                                                 break;
  108.                                         case "Motif风格":
  109.                                                 changeFlavor(5);
  110.                                                 break;
  111.                                 }
  112.                         }
  113.                         catch (Exception ee)
  114.                         {
  115.                                 ee.printStackTrace();
  116.                         }
  117.                 };             
  118.                 metalItem.addActionListener(flavorListener);
  119.                 nimbusItem.addActionListener(flavorListener);
  120.                 windowsItem.addActionListener(flavorListener);
  121.                 classicItem.addActionListener(flavorListener);
  122.                 motifItem.addActionListener(flavorListener);
  123.                 ta.setComponentPopupMenu(pop);
  124.                 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  125.                 f.pack();
  126.                 f.setVisible(true);
  127.         }
  128.         private void changeFlavor(int flavor)throws Exception
  129.         {
  130.                 switch (flavor)
  131.                 {
  132.                         case 1:
  133.                                 UIManager.setLookAndFeel(
  134.                                 "javax.swing.plaf.metal.MetalLookAndFeel");
  135.                                 break;
  136.                         case 2:
  137.                                 UIManager.setLookAndFeel(
  138.                                 "javax.swing.plaf.nimbus.NimbusLookAndFeel");
  139.                                 break;
  140.                         case 3:
  141.                                 UIManager.setLookAndFeel(
  142.                                 "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
  143.                                 break;
  144.                         case 4:
  145.                                 UIManager.setLookAndFeel(
  146.                                 "com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
  147.                                 break;
  148.                         case 5:
  149.                                 UIManager.setLookAndFeel(
  150.                                 "com.sun.java.swing.plaf.motif.MotifLookAndFeel");
  151.                                 break;
  152.                 }
  153.                 SwingUtilities.updateComponentTreeUI(f.getContentPane());  
  154.                 SwingUtilities.updateComponentTreeUI(mb);
  155.                 SwingUtilities.updateComponentTreeUI(pop);
  156.         }
  157.         public static void main(String[] args)
  158.         {
  159.                 new SwingComponent().init();
  160.         }
  161. }

回复 "较复杂的表单设计"

这儿你可以回复上面这条便签

captcha