[引言]數據庫
咱們在學習Java編程的時候,若是須要開發客戶端窗體類型的程序,能夠使用JDK中的awt和swing庫。本文開始小博老師就繼續爲你們演示Java窗體編程中的菜單欄製做,今天主要講解的菜單欄中的高級功能。編程
[步驟閱讀一]二級菜單欄學習
在以前基礎菜單的文章中,咱們瞭解到,想要把菜單項(JMenuItem)存放在菜單(JMenu)中,咱們使用的是JMenu.add(JMenuItem item)。那麼若是咱們想要在菜單(JMenu)中再增長一個二級菜單呢?其實很簡單,菜單(JMenu)中不但能夠添加菜單項(JMenuItem),還能夠繼續添加菜單(JMenu),這就是二級甚至三級菜單的製做思路。code
咱們先經過一個簡單案例來體會一下,核心代碼以下:對象
public class MenuFrame extends JFrame{blog
public MenuFrame(){ip
setBounds(100, 20, 415, 660);開發
setLayout(null);get
// 實例化 菜單欄 對象it
JMenuBar bar = new JMenuBar();
// 實例化 菜單 對象
JMenu menu1 = new JMenu("課程簡介");
JMenu menu2 = new JMenu("師資力量");
JMenu menu3 = new JMenu("學員做品");
JMenu menu4 = new JMenu("就業案例");
JMenu menu5 = new JMenu("關於博爲峯");
// 實例化 菜單項 對象
JMenu menu11 = new JMenu("全棧Java課程"); // 一級菜單中添加二級菜單
JMenuItem item12 = new JMenuItem("全棧Web+UI課程");
JMenuItem item13 = new JMenuItem("全棧iOS課程");
// 實例化 二級菜單項 對象
JMenuItem item111 = new JMenuItem("JavaSE標準版");
JMenuItem item112 = new JMenuItem("JavaWeb製做");
JMenuItem item113 = new JMenuItem("SQL數據庫");
JMenuItem item114 = new JMenuItem("JavaEE企業版");
JMenuItem item115 = new JMenuItem("Android應用");
// 將 菜單項 添加到 菜單 中
menu1.add(menu11);menu1.add(item12);menu1.add(item13);
// 將 二級菜單項 添加到 二級菜單 中
menu11.add(item111);menu11.add(item112);menu11.add(item113);menu11.add(item114);menu11.add(item115);
// 將 菜單 添加到 菜單欄 中
bar.add(menu1);bar.add(menu2);bar.add(menu3);bar.add(menu4);bar.add(menu5);
// 將 菜單欄 添加到 窗體 中
setJMenuBar(bar);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
咱們實例化窗體對象而且運行後效果以下:
[步驟閱讀二]單選和複選菜單項
有的時候,在菜單製做過程當中,咱們須要添加一些能夠單選或則複選的選項,供用戶選擇,此時咱們就須要使用到單選(JRadioButtonMenuItem)和複選菜單項(JCheckBoxMenuItem),它們都是JMenuItem菜單項的派生類。
咱們先經過一個簡單案例來體會一下,核心代碼以下:
public class MenuFrame extends JFrame{
public MenuFrame(){
setBounds(100, 20, 600, 400);
setLayout(null);
// 實例化 菜單欄 對象
JMenuBar bar = new JMenuBar();
// 實例化 菜單 對象
JMenu menu1 = new JMenu("課程簡介");
JMenu menu2 = new JMenu("師資力量");
JMenu menu3 = new JMenu("學員做品");
JMenu menu4 = new JMenu("就業案例");
JMenu menu5 = new JMenu("關於博爲峯");
// 實例化 菜單項 對象
JMenu menu11 = new JMenu("全棧Java課程"); // 一級菜單中添加二級菜單
JMenuItem item12 = new JMenuItem("全棧Web+UI課程");
JMenuItem item13 = new JMenuItem("全棧iOS課程");
// 實例化 單選菜單項 對象
JRadioButtonMenuItem item21 = new JRadioButtonMenuItem("上海漕河涇校區");
JRadioButtonMenuItem item22 = new JRadioButtonMenuItem("北京回龍觀校區");
JRadioButtonMenuItem item23 = new JRadioButtonMenuItem("深圳華強北校區");
JRadioButtonMenuItem item24 = new JRadioButtonMenuItem("南京新街口校區");
JRadioButtonMenuItem item25 = new JRadioButtonMenuItem("成都航空路校區");
// 實例化 複選菜單項 對象
JCheckBoxMenuItem item26 = new JCheckBoxMenuItem("JavaSE師資庫");
JCheckBoxMenuItem item27 = new JCheckBoxMenuItem("JavaWeb師資庫");
JCheckBoxMenuItem item28 = new JCheckBoxMenuItem("SQL師資庫");
JCheckBoxMenuItem item29 = new JCheckBoxMenuItem("JavaEE師資庫");
JCheckBoxMenuItem item30 = new JCheckBoxMenuItem("Android師資庫");
// 實例化按鈕組 對象 爲了讓單選按鈕出現互斥效果
ButtonGroup group = new ButtonGroup();
// 將 單選按鈕菜單項 添加到 按鈕分組 中
group.add(item21);group.add(item22);group.add(item23);group.add(item24);group.add(item25);
// 實例化 二級菜單項 對象
JMenuItem item111 = new JMenuItem("JavaSE標準版");
JMenuItem item112 = new JMenuItem("JavaWeb製做");
JMenuItem item113 = new JMenuItem("SQL數據庫");
JMenuItem item114 = new JMenuItem("JavaEE企業版");
JMenuItem item115 = new JMenuItem("Android應用");
// 將 菜單項 添加到 菜單 中
menu1.add(menu11);menu1.add(item12);menu1.add(item13);
menu2.add(item21);menu2.add(item22);menu2.add(item23);menu2.add(item24);menu2.add(item25);
// 添加分割線
menu2.addSeparator();
menu2.add(item26);menu2.add(item27);menu2.add(item28);menu2.add(item29);menu2.add(item30);
// 將 二級菜單項 添加到 二級菜單 中
menu11.add(item111);menu11.add(item112);menu11.add(item113);menu11.add(item114);menu11.add(item115);
// 將 菜單 添加到 菜單欄 中
bar.add(menu1);bar.add(menu2);bar.add(menu3);bar.add(menu4);bar.add(menu5);
// 將 菜單欄 添加到 窗體 中
setJMenuBar(bar);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
咱們實例化窗體對象而且運行後效果以下: