美文网首页
Swing菜单基本组件用法和系统样式

Swing菜单基本组件用法和系统样式

作者: 开心的小哈 | 来源:发表于2021-10-24 22:15 被阅读0次
package com.main;

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


public class JframeDeom {
     JFrame jframe=new JFrame("JFrame组件");
    JMenuBar jmenuBar= new JMenuBar();
     //菜单
     JMenu fileMenu=  new JMenu("文件");
    JMenu editMenu=  new JMenu("编辑");

    //菜单项
    JMenuItem auto=new JMenuItem("自动换行");
    JMenuItem cope=new JMenuItem("复制",new ImageIcon("C:\\Users\\Administrator\\IdeaProjects\\Tanqiu\\img\\a.png"));
    JMenuItem paste=new JMenuItem("粘贴",new ImageIcon("C:\\Users\\Administrator\\IdeaProjects\\Tanqiu\\img\\copy.png"));
    //菜单
    JMenu formatMenu=new JMenu("格式");
    JMenuItem comment=new JMenuItem("注释");

    JMenuItem cancelComment=new JMenuItem("取消注释");
    //生命文本域
    JTextArea ta=new JTextArea(8,20);

    //声明列表框
    String []colorString={"红色","绿色","蓝色"};

    JList<String> colorList=new JList<>(colorString);


    //声明选择相关组件
    JComboBox<String> colorSelect=new JComboBox<>();

    //创建按钮组
    ButtonGroup bg=new ButtonGroup();
    JRadioButton male=new JRadioButton("男",false);
    JRadioButton female=new JRadioButton("女",true);
    //复选框
    JCheckBox isMarid=new JCheckBox("是否已婚?",true);

    //声明底部
    JTextField tf=new JTextField(40);
    ImageIcon image= new ImageIcon("C:\\Users\\Administrator\\IdeaProjects\\Tanqiu\\img\\come.png");
    JButton ok=new JButton("确认",image);

    //声明右侧菜单
    JPopupMenu jPopupMenu=new JPopupMenu();
    ButtonGroup popupButton=new ButtonGroup();
    JRadioButtonMenuItem metal=new JRadioButtonMenuItem("metal 风格");
    JRadioButtonMenuItem Nimbus=new JRadioButtonMenuItem("Nimbus 风格");
    JRadioButtonMenuItem Windows=new JRadioButtonMenuItem("Windows 风格",true);
    JRadioButtonMenuItem Motif=new JRadioButtonMenuItem("Motif 风格");



    public void init(){
        //组装试图

        //组装底部
        JPanel bootmPanel=new JPanel();
        bootmPanel.add(tf);
        bootmPanel.add(ok);

        jframe.add(bootmPanel, 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(isMarid);

        //组装文本域和选择相关组件
        Box Left = Box.createVerticalBox();
        Left.add(ta);
        Left.add(selectPanel);
        //组装顶部
        Box horizontalBox = Box.createHorizontalBox();


        horizontalBox.add(Left);
        horizontalBox.add(colorList);
        jframe.add(horizontalBox);

        //组装顶部菜单
        formatMenu.add(comment);
        formatMenu.add(cancelComment);

        editMenu.add(auto);
        editMenu.addSeparator();
        editMenu.add(cope);
        editMenu.add(paste);
        editMenu.addSeparator();
        editMenu.add(formatMenu);

        jmenuBar.add(fileMenu);
        jmenuBar.add(editMenu);

        jframe.setJMenuBar(jmenuBar);
        //组装右键菜单

        popupButton.add(metal);
        popupButton.add(Nimbus);
        popupButton.add(Windows);
        popupButton.add(Motif);

        ActionListener actionListener=new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //当前选择的是哪一个动作
                String actionCommand = e.getActionCommand();
                try {
                    chageFlavor(actionCommand);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        };
        metal.addActionListener(actionListener);
        Nimbus.addActionListener(actionListener);
        Windows.addActionListener(actionListener);
        Motif.addActionListener(actionListener);

        jPopupMenu.add(metal);
        jPopupMenu.add(Nimbus);
        jPopupMenu.add(Windows);
        jPopupMenu.add(Motif);
        //不需要监听鼠标事件了
        ta.setComponentPopupMenu(jPopupMenu);

        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jframe.pack();
        jframe.setVisible(true);

    }
    //定义一个方法来修改外观
    private void chageFlavor(String command)throws Exception{
        switch (command){
            case "metal 风格":
                UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                break;
            case "Nimbus 风格":
                UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
                break;
            case "Windows 风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                break;
            case "Motif 风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
                break;
            default:
                System.out.println("我i");
                break;
        }
        //刷新组件的外观
        SwingUtilities.updateComponentTreeUI(jframe.getContentPane());
        SwingUtilities.updateComponentTreeUI(jmenuBar);
        SwingUtilities.updateComponentTreeUI(jPopupMenu);
    }


    public static void main(String[] args) {
        new JframeDeom().init();
    }
}

相关文章

网友评论

      本文标题:Swing菜单基本组件用法和系统样式

      本文链接:https://www.haomeiwen.com/subject/ngaeoltx.html