Java詳細解析下拉菜單和彈出菜單的使用
Swing菜單組件
下拉式菜單介紹
創(chuàng)建一個下拉式菜單,需要三個組件,JmenuBar(菜單欄),Jmenu(菜單),Jmenultem(菜單項)。
下拉式菜單的三個組件
JMenuBar(菜單欄)
表示一個水平的菜單欄,用來管理菜單,不參與同用戶的交互式操作,菜單欄可以放在容器的任何位置,但通常情況下會使用頂級窗口的setJMenuBar方法將它放置在頂級窗口的頂部,JMenuBar有一個午無參的構(gòu)造函數(shù),創(chuàng)建菜單欄時,只需要使用new關(guān)鍵字創(chuàng)建JMenuBar對象,創(chuàng)建完成之后,可以調(diào)用add(JMenu c)方法添加JMenu菜單。
JMenu(菜單)
用來整合管理菜單項,菜單可以是單一層次的結(jié)構(gòu),也可以是多層次的結(jié)構(gòu),可以使用JMenu(String text)創(chuàng)建JMenu菜單,其中的參數(shù)text表示菜單上的文本。
菜單的常用方法
方法聲明 | 功能描述 |
---|---|
void JMenuItem add(JMenuItem menuItem) | 將菜單項添加到菜單末尾,返回此菜單項 |
void addSeparator() | 將分隔符添加到菜單末尾 |
JMenuItem getItem(int pos) | 返回指定索引處的菜單項,第一個菜單項的索引為0 |
int getItemCount() | 返回菜單上的項數(shù),菜單項和分隔符都計算在內(nèi) |
void JMenuItem insert(JmuenuItem menuItem,int pos) | 在指定索引處插入菜單項 |
void insertsertSeparator(int pos) | 在指定索引處插入分隔符 |
void remove(int pos) | 從菜單中移除指定索引處的菜單項 |
void remove(JMenuItem menuItem) | 從菜單中移除指定的菜單項 |
void removeAll() | 從菜單中移除所有的菜單項 |
JMenuItem(菜單項)
在創(chuàng)建菜單項時,通常會采用構(gòu)造方法JMenuItem為菜單項指定文本內(nèi)容。因為JMenuItem是繼承AbstractButton類的,所以可以吧它看作一個按鈕,可以用無參的構(gòu)造方法創(chuàng)建一個菜單項,可以調(diào)用從AbstractButton類中繼承的setText(String text)方法和setItem()方法為其設(shè)置文本和圖標。
下拉式菜單的創(chuàng)建與使用
package Swing; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CaiDan extends JFrame { public CaiDan(){ //創(chuàng)建菜單欄 JMenuBar menuBar=new JMenuBar(); //將菜單欄添加到JFrame窗口中 this.setJMenuBar(menuBar); //創(chuàng)建菜單 JMenu menu=new JMenu("操作"); //將菜單添加到菜單欄上 menuBar.add(menu); //創(chuàng)建兩個菜單項 JMenuItem item1=new JMenuItem("彈出窗口"); JMenuItem item2=new JMenuItem("關(guān)閉"); //為菜單項添加事件監(jiān)聽器 item1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //創(chuàng)建一個JDialog窗口 JDialog dialog=new JDialog(CaiDan.this,true); dialog.setTitle("彈出窗口"); dialog.setSize(200,200); dialog.setLocation(50,50); dialog.setVisible(true); } }); item2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); //將菜單項添加到菜單中 menu.add(item1); menu.addSeparator(); menu.add(item2); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(300,300); this.setVisible(true); } public static void main(String[] args) { new CaiDan(); } }
創(chuàng)建和添加下拉式菜單的一般步驟
- 創(chuàng)建一個JMenuBar菜單欄對象,將其放置在JFrame窗口的頂部
- 創(chuàng)建JMenu菜單對象,將其添加到JMenuBar菜單欄中
- 創(chuàng)建JMenuItem菜單項,將其添加到JMenuBar菜單中。
彈出式菜單介紹
在系統(tǒng)中單擊右鍵出現(xiàn)的菜單就是彈出式菜單,在Java的Swing組件中,彈出式菜單用JPopupMenu表示。通過add()方法添加JMenuItem菜單項,默認是不可見的。
彈出式菜單的創(chuàng)建與使用
package Swing; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class TanChu extends JFrame { private JPopupMenu popupMenu; public TanChu(){ //創(chuàng)建一個JPopupMenu菜單 popupMenu=new JPopupMenu(); //創(chuàng)建三個JMenuItem菜單項 JMenuItem refreshItem=new JMenuItem("refresh"); JMenuItem createItem=new JMenuItem("create"); JMenuItem exitItem=new JMenuItem("exit"); //為exitItem菜單項添加事件監(jiān)聽器 exitItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); //向JPopupMenu菜單添加菜單項 popupMenu.add(refreshItem); popupMenu.add(createItem); popupMenu.addSeparator(); popupMenu.add(exitItem); //向JFrame窗口添加clicked鼠標事件監(jiān)聽器 this.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { //通過值匹配,當點擊右鍵的時候,顯示JPopupMenu菜單 if(e.getButton()==e.BUTTON3){ popupMenu.show(e.getComponent(),e.getX(),e.getY()); } } }); this.setSize(300,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { new TanChu(); } }
小結(jié)
以上就是我對于Java中幾種常見菜單的理解,以便于我們之后在不同開發(fā)中根據(jù)不同的情況設(shè)置不同的菜單,提高用戶的體驗感。
到此這篇關(guān)于Java詳細解析下拉菜單和彈出菜單的使用的文章就介紹到這了,更多相關(guān)Java菜單內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA的Swing可視化插件JFormDesigner詳解
JFormDesigner是一個專業(yè)的軟件應(yīng)用程序,專門用于幫助您開發(fā)Java?Swing用戶界面,而無需具備編程技能。它可作為獨立實用程序使用,也可以將其用作各種IDE的插件,本文給大家介紹idea?Swing可視化插件,感興趣的朋友一起看看吧2022-06-06線程池之newFixedThreadPool定長線程池的實例
這篇文章主要介紹了線程池之newFixedThreadPool定長線程池的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06spring?boot?導(dǎo)出數(shù)據(jù)到excel的操作步驟(demo)
這篇文章主要介紹了spring?boot?導(dǎo)出數(shù)據(jù)到excel的實現(xiàn)步驟,文中通過打開一個平時練習(xí)使用的springboot的demo給大家詳細介紹,需要的朋友可以參考下2022-03-03Java的String類中的startsWith方法和endsWith方法示例詳解
大家應(yīng)該都知道startsWith()方法用于檢測字符串是否以指定的前綴開始,endsWith()方法用于測試字符串是否以指定的后綴結(jié)束,本文就Java的String類中的startsWith方法和endsWith方法給大家詳細講解,感興趣的朋友一起看看吧2023-11-11Java swing框架實現(xiàn)的貪吃蛇游戲完整示例
這篇文章主要介紹了Java swing框架實現(xiàn)的貪吃蛇游戲,結(jié)合完整實例形式分析了java使用swing框架結(jié)合awt圖形繪制實現(xiàn)貪吃蛇游戲的具體步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-12-12