swing基本组件

在这里插入图片描述
在这里插入图片描述

package com.one.basic;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class SwingComponentDemo {
    JFrame jf = new JFrame("测试swing基本组件");
    //声明菜单相关组件
    JMenuBar jMenuBar = new JMenuBar();
    JMenu file = new JMenu("文件");
    JMenu edit = new JMenu("编辑");
    JMenuItem autoLinefeed = new JMenuItem("自动换行", new ImageIcon("C:\\Users\\lee\\IdeaProjects\\swing\\src\\img\\enter.png"));
    JMenuItem copy = new JMenuItem("复制", new ImageIcon("C:\\Users\\lee\\IdeaProjects\\swing\\src\\img\\copy.png"));
    JMenuItem paste = new JMenuItem("粘贴", new ImageIcon("C:\\Users\\lee\\IdeaProjects\\swing\\src\\img\\paste.png"));
    JMenu format = new JMenu("格式");
    JMenuItem comment = new JMenuItem("注释", new ImageIcon("C:\\Users\\lee\\IdeaProjects\\swing\\src\\img\\comment.png"));
    JMenuItem uncomment = new JMenuItem("取消注释", new ImageIcon("C:\\Users\\lee\\IdeaProjects\\swing\\src\\img\\uncomment.png"));
    //声明文本域
    JTextArea jTextArea = new JTextArea(8, 20);
    //声明颜色列表框
    String[] colors = {"红色", "绿色", "蓝色"};
    JList<String> colorList = new JList<>(colors);
    //    声明选择相关组件,下拉选择框,单选框,复选框。
    JComboBox<String> colorSelect = new JComboBox<>();
    ButtonGroup bg = new ButtonGroup();
    JRadioButton male = new JRadioButton("男", false);
    JRadioButton female = new JRadioButton("女", true);
    JCheckBox isMarried = new JCheckBox("是否已婚", true);
    //    声明右键菜单,单选菜单
    JPopupMenu jPopupMenu = new JPopupMenu();
    ButtonGroup bg1 = new ButtonGroup();
    JRadioButtonMenuItem metal = new JRadioButtonMenuItem("Metal风格");
    JRadioButtonMenuItem niubus = new JRadioButtonMenuItem("Niubus风格");
    JRadioButtonMenuItem windows = new JRadioButtonMenuItem("Windows风格", true);
    JRadioButtonMenuItem windowsClassic = new JRadioButtonMenuItem("WindowsClassic经典风格");
    JRadioButtonMenuItem motif = new JRadioButtonMenuItem("Motif风格");
    //声明底部
    JTextField tf = new JTextField(40);
    JButton ok = new JButton("确定", new ImageIcon("C:\\Users\\lee\\IdeaProjects\\swing\\src\\img\\ok.png"));

    //    初始化界面
    public void init() {
//组装视图
//        组装底部
        JPanel bottomPanel = new JPanel();
        bottomPanel.add(tf);
        bottomPanel.add(ok);
        jf.add(bottomPanel, BorderLayout.SOUTH);

//        组装选择相关的组件
        JPanel selectPanel = new JPanel();
        colorSelect.addItem("红色");
        colorSelect.addItem("绿色");
        colorSelect.addItem("蓝色");
        selectPanel.add(colorSelect);
        bg.add(male);
        bg.add(female);
        selectPanel.add(male);
        selectPanel.add(female);
        selectPanel.add(isMarried);
//组装文本域和选择相关组件
        Box topLeft = Box.createVerticalBox();
        topLeft.add(jTextArea);
        topLeft.add(selectPanel);
        //组装顶部
        Box top = Box.createHorizontalBox();
        top.add(topLeft);
        top.add(colorList);
        jf.add(top);
//组装顶部菜单
        format.add(comment);
        format.add(uncomment);
        edit.add(autoLinefeed);
        edit.addSeparator();
        edit.add(copy);
        edit.add(paste);
        edit.addSeparator();
        edit.add(format);
        jMenuBar.add(file);
        jMenuBar.add(edit);
        jf.setJMenuBar(jMenuBar);
//        组装右键菜单
        bg1.add(metal);
        bg1.add(niubus);
        bg1.add(windows);
        bg1.add(windowsClassic);
        bg1.add(motif);
//增加监听器,改变界面显示风格
        ActionListener listener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String actionCommand = e.getActionCommand();
                try {
                    changeFlavor(actionCommand);
                } catch (Exception exception) {
                    exception.printStackTrace();
                }
            }
        };
        metal.addActionListener(listener);
        niubus.addActionListener(listener);
        windows.addActionListener(listener);
        windowsClassic.addActionListener(listener);
        motif.addActionListener(listener);
        jPopupMenu.add(metal);
        jPopupMenu.add(niubus);
        jPopupMenu.add(windows);
        jPopupMenu.add(windowsClassic);
        jPopupMenu.add(motif);
//        不需要再监听鼠标事件
        jTextArea.setComponentPopupMenu(jPopupMenu);
        jf.pack();
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    //    定义一个方法,用于改善界面风格
    private void changeFlavor(String command) throws Exception {
        switch (command) {
            case "Metal风格":
                UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                break;
            case "Niubus风格":
                UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
                break;
            case "Windows风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                break;
            case "WindowsClassic经典风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
                break;
            case "Motif风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
                break;
        }
        //    刷新组件的外观
        SwingUtilities.updateComponentTreeUI(jf.getContentPane());
        SwingUtilities.updateComponentTreeUI(jMenuBar);
        SwingUtilities.updateComponentTreeUI(jPopupMenu);
    }

    public static void main(String[] args) {
        new SwingComponentDemo().init();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值