zoukankan      html  css  js  c++  java
  • 【Java-GUI】07 Swing01 入门案例

    Swing是Java自己开发出的一套GUI组件,不同于AWT去调用操作系统的GUI

    正是因为非系统平台的GUI,所以程序运行的要慢一些

    涉及的设计模式:MVC模式

    Model(组件对象状态)
    
    View(组件可视化表现)
    
    Controller(组件的事件行为)

    类体系:

    java.awt.Component
        |
    java.awtContainer
        |
    java.swing.JComponent
        |
    java.swing.Jxxxx(各种组件的具体类)

    演示案例:

    package cn.dzz.swing;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class Demo01 {
    
        JFrame jFrame = new JFrame("Swing");
    
        JMenuBar jmenuBar = new JMenuBar();
    
        JMenu fileJMenu = new JMenu("文件");
        JMenu editJMenu = new JMenu("编辑");
        JMenuItem autoNextLine = new JMenuItem("自动换行");
        // JMenuItem copy = new JMenuItem("复制")
        JMenuItem copy = new JMenuItem("复制", new ImageIcon("img/icon01.png"));
        JMenuItem paste = new JMenuItem("粘贴", new ImageIcon("img/icon01.png"));
    
        JMenu formatJMenu = new JMenu("格式");
        JMenuItem comment = new JMenuItem("注释");
        JMenuItem cancelComment = new JMenuItem("取消注释");
    
        // 文本域
        JTextArea jTextArea = new JTextArea(8,20);
        // 列表框
        String[] colorList = {
                "红色",
                "绿色",
                "蓝色",
        };
        JList<String> jList = new JList<>(colorList);
        // 下拉选择框
        JComboBox<String> jComboBox = new JComboBox<>();
        // 单选
        ButtonGroup buttonGroup = new ButtonGroup();
        JRadioButton male = new JRadioButton("男性", true);
        JRadioButton female = new JRadioButton("女性", false);
        // 复选框
        JCheckBox isMarry = new JCheckBox("是否已婚", true);
    
        // 底部
        JTextField jTextField = new JTextField(20);
        JButton ok = new JButton("确定", new ImageIcon("img/icon02.png"));
        // 风格设置
        JPopupMenu styleMenu = new JPopupMenu();
        ButtonGroup styleGroup = new ButtonGroup();
        JRadioButtonMenuItem metal = new JRadioButtonMenuItem("Metal-Style");
        JRadioButtonMenuItem nimbus = new JRadioButtonMenuItem("Nimbus-Style");
        JRadioButtonMenuItem windows = new JRadioButtonMenuItem("Windows-Style");
        JRadioButtonMenuItem classicWindows = new JRadioButtonMenuItem("ClassicWindows-Style");
        JRadioButtonMenuItem motif = new JRadioButtonMenuItem("Motif-Style");
    
        public void init() {
            
            JPanel bottomPanel = new JPanel();
            bottomPanel.add(jTextField);
            bottomPanel.add(ok);
            jFrame.add(bottomPanel, BorderLayout.SOUTH);
    
            JPanel selectPanel = new JPanel();
    
            jComboBox.addItem("red");
            jComboBox.addItem("green");
            jComboBox.addItem("blue");
            selectPanel.add(jComboBox);
    
            buttonGroup.add(male);
            buttonGroup.add(female);
            selectPanel.add(male);
            selectPanel.add(female);
            selectPanel.add(isMarry);
    
            Box leftBox = Box.createVerticalBox();
            leftBox.add(jTextArea);
            leftBox.add(selectPanel);
    
            Box topBox = Box.createHorizontalBox();
            topBox.add(leftBox);
            topBox.add(jList);
            jFrame.add(topBox);
    
            // 顶部菜单设置
            formatJMenu.add(comment);
            formatJMenu.add(cancelComment);
    
            editJMenu.add(autoNextLine);
            editJMenu.addSeparator(); // 分割线
            editJMenu.add(copy);
            editJMenu.add(paste);
            editJMenu.addSeparator(); // 分割线
            editJMenu.add(formatJMenu);
    
            jmenuBar.add(fileJMenu);
            jmenuBar.add(editJMenu);
    
            jFrame.setJMenuBar(jmenuBar);
    
            styleMenu.add(metal);
            styleMenu.add(nimbus);
            styleMenu.add(windows);
            styleMenu.add(classicWindows);
            styleMenu.add(motif);
    
            // 事件监听
            ActionListener actionListener = new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String actionCommand = e.getActionCommand();
                    try {
                        changeStyle(actionCommand);
                    } catch (Exception exception) {
                        exception.printStackTrace();
                    }
                }
            };
            metal.addActionListener(actionListener);
            nimbus.addActionListener(actionListener);
            windows.addActionListener(actionListener);
            classicWindows.addActionListener(actionListener);
            motif.addActionListener(actionListener);
    
            // 设置进按钮组中。表示只能选中一个选项
            styleGroup.add(metal);
            styleGroup.add(nimbus);
            styleGroup.add(windows);
            styleGroup.add(classicWindows);
            styleGroup.add(motif);
    
            jTextArea.setComponentPopupMenu(styleMenu);
    
            jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            jFrame.pack();
            jFrame.setVisible(true);
        }
    
        private void changeStyle(String command)  throws Exception {
            switch (command) {
                case "Metal-Style":
                    UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                    break;
                case "Nimbus-Style":
                    UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
                    break;
                case "Windows-Style":
                    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                    break;
                case "ClassicWindows-Style":
                    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
                    break;
                case "Motif-Style":
                    UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
                    break;
            }
            // 更新界面风格
            SwingUtilities.updateComponentTreeUI(jFrame.getContentPane());
            SwingUtilities.updateComponentTreeUI(jmenuBar);
            SwingUtilities.updateComponentTreeUI(styleMenu);
        }
    
    
        public static void main(String[] args) {
            new Demo01().init();
        }
    }
    

      

    效果预览:

    风格选择:

    编辑菜单:

  • 相关阅读:
    详解ASP.NET页面的asp“.NET研究”x扩展 狼人:
    Microsoft NLa“.NET研究”yerApp案例理论与实践 多层架构与应用系统设计原则 狼人:
    HTML5 搭建“.NET研究”移动Web应用 狼人:
    VS201“.NET研究”0 C++下编译调试MongoDB源码 狼人:
    Silverlight 的多线程能力(下“.NET技术”) 狼人:
    Log4Net 全方“.NET技术”位跟踪程序运行 狼人:
    三种属性操作性能比较:PropertyInfo + Expression Tree + Delega“.NET技术”te.CreateDelegate 狼人:
    .NET简谈观察者“.NET技术”模式 狼人:
    Microsoft NLayerApp案例理论与实践 项目简“.NET研究”介与环境搭建 狼人:
    “.NET研究”专访微软MVP衣明志:走进ASP.NET MVC 2框架开发 狼人:
  • 原文地址:https://www.cnblogs.com/mindzone/p/14384027.html
Copyright © 2011-2022 走看看