Swing 菜单JMenu,JMenuBar,JMenuItem、工具栏JToolBar、日期控件DatePicker和JXDatePicker、皮肤

GUI的菜单分为 菜单栏,菜单和菜单项

  • 菜单栏和菜单

    菜单栏JMenuBar和菜单JMeun



    package gui;
     
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
     
    public class TestGUI {
        public static void main(String[] args) {
     
            JFrame f = new JFrame("LoL");
            f.setSize(400, 300);
            f.setLocation(200, 200);
     
            // 菜单栏
            JMenuBar mb = new JMenuBar();
     
            // 菜单
            JMenu mHero = new JMenu("英雄");
            JMenu mItem = new JMenu("道具");
            JMenu mWord = new JMenu("符文");
            JMenu mSummon = new JMenu("召唤师");
            JMenu mTalent = new JMenu("天赋树");
     
            // 把菜单加入到菜单栏
            mb.add(mHero);
            mb.add(mItem);
            mb.add(mWord);
            mb.add(mSummon);
            mb.add(mTalent);
     
            // 把菜单栏加入到frame,这里用的是set而非add
            f.setJMenuBar(mb);
     
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            f.setVisible(true);
        }
    }
  • 菜单项

    菜单项JMenuItem



    package gui;
     
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
     
    public class TestGUI {
        public static void main(String[] args) {
     
            JFrame f = new JFrame("LoL");
            f.setSize(400, 400);
            f.setLocation(200, 200);
     
            JMenuBar mb = new JMenuBar();
     
            JMenu mHero = new JMenu("英雄");
            JMenu mItem = new JMenu("道具");
            JMenu mWord = new JMenu("符文");
            JMenu mSummon = new JMenu("召唤师");
            JMenu mTalent = new JMenu("天赋树");
     
            // 菜单项
            mHero.add(new JMenuItem("近战-Warriar"));
            mHero.add(new JMenuItem("远程-Range"));
            mHero.add(new JMenuItem("物理-physical"));
            mHero.add(new JMenuItem("坦克-Tank"));
            mHero.add(new JMenuItem("法系-Mage"));
            mHero.add(new JMenuItem("辅助-Support"));
            mHero.add(new JMenuItem("打野-Jungle"));
            mHero.add(new JMenuItem("突进-Charge"));
            mHero.add(new JMenuItem("男性-Boy"));
            mHero.add(new JMenuItem("女性-Girl"));
            // 分隔符
            mHero.addSeparator();
            mHero.add(new JMenuItem("所有-All"));
     
            mb.add(mHero);
            mb.add(mItem);
            mb.add(mWord);
            mb.add(mSummon);
            mb.add(mTalent);
     
            f.setJMenuBar(mb);
     
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            f.setVisible(true);
        }
    }
  • 工具栏用于存放常用的按钮

    工具栏



    package gui;
     
    import java.awt.BorderLayout;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JToolBar;
     
    public class TestGUI {
        public static void main(String[] args) {
     
            JFrame f = new JFrame("LoL");
            f.setSize(400, 300);
            f.setLocation(200, 200);
            // 菜单
            addMenu(f);
     
            // 工具栏
            JToolBar tb = new JToolBar();
            // 为工具栏增加按钮
            JButton b1 = new JButton(new ImageIcon("e:/project/j2se/1.jpg"));
            JButton b2 = new JButton(new ImageIcon("e:/project/j2se/2.jpg"));
            JButton b3 = new JButton(new ImageIcon("e:/project/j2se/3.jpg"));
            JButton b4 = new JButton(new ImageIcon("e:/project/j2se/4.jpg"));
            JButton b5 = new JButton(new ImageIcon("e:/project/j2se/5.jpg"));
            JButton b6 = new JButton(new ImageIcon("e:/project/j2se/6.jpg"));
            tb.add(b1);
            tb.add(b2);
            tb.add(b3);
            tb.add(b4);
            tb.add(b5);
            tb.add(b6);
     
            // 把工具栏放在north的位置
            f.setLayout(new BorderLayout());
            f.add(tb, BorderLayout.NORTH);
     
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            f.setVisible(true);
        }
     
        private static void addMenu(JFrame f) {
            JMenuBar mb = new JMenuBar();
     
            JMenu mHero = new JMenu("英雄");
            JMenu mItem = new JMenu("道具");
            JMenu mWord = new JMenu("符文");
            JMenu mSummon = new JMenu("召唤师");
            JMenu mTalent = new JMenu("天赋树");
     
            // 菜单项
            mHero.add(new JMenuItem("近战-Warriar"));
            mHero.add(new JMenuItem("远程-Range"));
            mHero.add(new JMenuItem("物理-physical"));
            mHero.add(new JMenuItem("坦克-Tank"));
            mHero.add(new JMenuItem("法系-Mage"));
            mHero.add(new JMenuItem("辅助-Support"));
            mHero.add(new JMenuItem("打野-Jungle"));
            mHero.add(new JMenuItem("突进-Charge"));
            mHero.add(new JMenuItem("男性-Boy"));
            mHero.add(new JMenuItem("女性-Girl"));
     
            mb.add(mHero);
            mb.add(mItem);
            mb.add(mWord);
            mb.add(mSummon);
            mb.add(mTalent);
     
            f.setJMenuBar(mb);
        }
    }
  • 给按钮设置提示信息

    当鼠标放在按钮上的时候会出现提示



    package gui;
     
    import java.awt.BorderLayout;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JToolBar;
     
    public class TestGUI {
        public static void main(String[] args) {
     
            JFrame f = new JFrame("LoL");
            f.setSize(400, 300);
            f.setLocation(200, 200);
            addMenu(f);
     
            JToolBar tb = new JToolBar();
            JButton b1 = new JButton(new ImageIcon("e:/project/j2se/1.jpg"));
            JButton b2 = new JButton(new ImageIcon("e:/project/j2se/2.jpg"));
            JButton b3 = new JButton(new ImageIcon("e:/project/j2se/3.jpg"));
            JButton b4 = new JButton(new ImageIcon("e:/project/j2se/4.jpg"));
            JButton b5 = new JButton(new ImageIcon("e:/project/j2se/5.jpg"));
            JButton b6 = new JButton(new ImageIcon("e:/project/j2se/6.jpg"));
            tb.add(b1);
            tb.add(b2);
            tb.add(b3);
            tb.add(b4);
            tb.add(b5);
            tb.add(b6);
     
            // 给按钮设置提示信息
            b1.setToolTipText("坑爹英雄");
     
            // 把工具栏放在north的位置
            f.setLayout(new BorderLayout());
            f.add(tb, BorderLayout.NORTH);
     
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            f.setVisible(true);
        }
     
        private static void addMenu(JFrame f) {
            JMenuBar mb = new JMenuBar();
     
            JMenu mHero = new JMenu("英雄");
            JMenu mItem = new JMenu("道具");
            JMenu mWord = new JMenu("符文");
            JMenu mSummon = new JMenu("召唤师");
            JMenu mTalent = new JMenu("天赋树");
     
            // 菜单项
            mHero.add(new JMenuItem("近战-Warriar"));
            mHero.add(new JMenuItem("远程-Range"));
            mHero.add(new JMenuItem("物理-physical"));
            mHero.add(new JMenuItem("坦克-Tank"));
            mHero.add(new JMenuItem("法系-Mage"));
            mHero.add(new JMenuItem("辅助-Support"));
            mHero.add(new JMenuItem("打野-Jungle"));
            mHero.add(new JMenuItem("突进-Charge"));
            mHero.add(new JMenuItem("男性-Boy"));
            mHero.add(new JMenuItem("女性-Girl"));
     
            mb.add(mHero);
            mb.add(mItem);
            mb.add(mWord);
            mb.add(mSummon);
            mb.add(mTalent);
     
            f.setJMenuBar(mb);
        }
    }
  • 禁止工具栏拖动

    默认情况下 工具栏可以通过鼠标拖动
     
    setFloatable(false);

    可以禁止鼠标拖动功能



    package gui;
     
    import java.awt.BorderLayout;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JToolBar;
     
    public class TestGUI {
        public static void main(String[] args) {
     
            JFrame f = new JFrame("LoL");
            f.setSize(400, 300);
            f.setLocation(200, 200);
            addMenu(f);
     
            JToolBar tb = new JToolBar();
            JButton b1 = new JButton(new ImageIcon("e:/project/j2se/1.jpg"));
            JButton b2 = new JButton(new ImageIcon("e:/project/j2se/2.jpg"));
            JButton b3 = new JButton(new ImageIcon("e:/project/j2se/3.jpg"));
            JButton b4 = new JButton(new ImageIcon("e:/project/j2se/4.jpg"));
            JButton b5 = new JButton(new ImageIcon("e:/project/j2se/5.jpg"));
            JButton b6 = new JButton(new ImageIcon("e:/project/j2se/6.jpg"));
            tb.add(b1);
            tb.add(b2);
            tb.add(b3);
            tb.add(b4);
            tb.add(b5);
            tb.add(b6);
     
            b1.setToolTipText("坑爹英雄");
     
            // 禁止工具栏拖动
            tb.setFloatable(false);
     
            // 把工具栏放在north的位置
            f.setLayout(new BorderLayout());
            f.add(tb, BorderLayout.NORTH);
     
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            f.setVisible(true);
        }
     
        private static void addMenu(JFrame f) {
            JMenuBar mb = new JMenuBar();
     
            JMenu mHero = new JMenu("英雄");
            JMenu mItem = new JMenu("道具");
            JMenu mWord = new JMenu("符文");
            JMenu mSummon = new JMenu("召唤师");
            JMenu mTalent = new JMenu("天赋树");
     
            // 菜单项
            mHero.add(new JMenuItem("近战-Warriar"));
            mHero.add(new JMenuItem("远程-Range"));
            mHero.add(new JMenuItem("物理-physical"));
            mHero.add(new JMenuItem("坦克-Tank"));
            mHero.add(new JMenuItem("法系-Mage"));
            mHero.add(new JMenuItem("辅助-Support"));
            mHero.add(new JMenuItem("打野-Jungle"));
            mHero.add(new JMenuItem("突进-Charge"));
            mHero.add(new JMenuItem("男性-Boy"));
            mHero.add(new JMenuItem("女性-Girl"));
     
            mb.add(mHero);
            mb.add(mItem);
            mb.add(mWord);
            mb.add(mSummon);
            mb.add(mTalent);
     
            f.setJMenuBar(mb);
        }
    }
    
  • swing没有自带的日期控件,需要第三方的类 
    jar包下载

    DatePicker  datepicker.jar
    JXDatePIcker swingx-core-1.6.2.jar

    DatePicker
    本例使用 datepicker.jar 包,有一个缺点,不能设置时间,只能在创建控件的时候传入指定日期。
    需要设置日期,请使用JXDatePicker


    package gui;
       
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Date;
    import java.util.Locale;
       
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
      
    import com.eltima.components.ui.DatePicker;
       
    public class TestGUI {
        public static void main(String[] args) {
       
            JFrame f = new JFrame("LoL");
            f.setSize(400, 300);
            f.setLocation(200, 200);
            f.setLayout(null);
       
            final DatePicker datepick;
            datepick = getDatePicker();
       
            f.add(datepick);
       
            JButton b = new JButton("获取时间");
            b.setBounds(137, 183, 100, 30);
            f.add(b);
       
            b.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    JOptionPane.showMessageDialog(f, "获取控件中的日期:" + datepick.getValue());
                    System.out.println(datepick.getValue());
                }
            });
       
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
            f.setVisible(true);
        }
     
        private static DatePicker getDatePicker() {
            final DatePicker datepick;
            // 格式
            String DefaultFormat = "yyyy-MM-dd HH:mm:ss";
            // 当前时间
            Date date = new Date();
            // 字体
            Font font = new Font("Times New Roman", Font.BOLD, 14);
       
            Dimension dimension = new Dimension(177, 24);
       
            int[] hilightDays = { 1, 3, 5, 7 };
       
            int[] disabledDays = { 4, 6, 5, 9 };
       
            datepick = new DatePicker(date, DefaultFormat, font, dimension);
       
            datepick.setLocation(137, 83);
            datepick.setBounds(137, 83, 177, 24);
            // 设置一个月份中需要高亮显示的日子
            datepick.setHightlightdays(hilightDays, Color.red);
            // 设置一个月份中不需要的日子,呈灰色显示
            datepick.setDisableddays(disabledDays);
            // 设置国家
            datepick.setLocale(Locale.CHINA);
            // 设置时钟面板可见
            datepick.setTimePanleVisible(true);
            return datepick;
        }
    }
  • JXDatePicker

    本例使用 包swingx-core-1.6.2.jar,界面比较简约,可以设置日期



    package gui;
     
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Date;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
     
    import org.jdesktop.swingx.JXDatePicker;
     
    public class TestGUI {
        public static void main(String[] args) {
     
            JFrame f = new JFrame("LoL");
            f.setSize(400, 300);
            f.setLocation(200, 200);
            f.setLayout(null);
     
            Date date = new Date();
     
            final JXDatePicker datepick = new JXDatePicker();
     
            // 设置 date日期
            datepick.setDate(date);
     
            datepick.setBounds(137, 83, 177, 24);
     
            f.add(datepick);
     
            JButton b = new JButton("获取时间");
            b.setBounds(137, 183, 100, 30);
            f.add(b);
     
            b.addActionListener(new ActionListener() {
     
                @Override
                public void actionPerformed(ActionEvent e) {
                    // 获取 日期
                    Date d = datepick.getDate();
                    JOptionPane.showMessageDialog(f, "获取控件中的日期 :" + d);
     
                }
            });
     
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            f.setVisible(true);
        }
    }
  • Swing 皮肤

    Java提供了非常便捷的方式切换界面风格

    皮肤对应的jar包的下载    Swing样式大全-全56种经典.rar

    设置皮肤

    只需要提供一句代码

    javax.swing.UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");

    就可以把所有的组件切换成不同的风格。


    注: 这句话需要加在最前面,如果已经创建了界面,再加这个有时候不能正常起作用。



    package gui;
      
    import javax.swing.JButton;
    import javax.swing.JFrame;
      
    public class TestGUI {
        public static void main(String[] args) {
            //设置皮肤
            setLookAndFeel();
     
            JFrame f = new JFrame("LoL");
            f.setSize(400, 300);
            f.setLocation(200, 200);
            f.setLayout(null);
            JButton b = new JButton("一键秒对方基地挂");
            b.setBounds(50, 50, 280, 30);
      
            f.add(b);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
            f.setVisible(true);
        }
      
        private static void setLookAndFeel() {
            try {
              javax.swing.UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
    //          javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.smart.SmartLookAndFeel");
    //          javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.mcwin.McWinLookAndFeel");
    //          javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.luna.LunaLookAndFeel");
    //          javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.aluminium.AluminiumLookAndFeel");
    //          javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.bernstein.BernsteinLookAndFeel");
    //          javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.hifi.HiFiLookAndFeel");
    //          javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.mint.MintLookAndFeel");
    //          javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.aero.AeroLookAndFeel");
    //          javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.fast.FastLookAndFeel");
    //          javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.acryl.AcrylLookAndFeel");
    //          javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.noire.NoireLookAndFeel");
            } catch (Exception e) {
                e.printStackTrace();
                // handle exception
            }
      
        }
    }







  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值