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

