<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前面講解了如果構建GUI介面,其實就是把一些GUI的元件,按照一定的佈局放入到容器中展示就可以了。在實際開發中,除了主介面,還有一類比較重要的內容就是選單相關元件,可以通過選單相關元件很方便的使用特定的功能,在AWT中,選單相關元件的使用和之前學習的元件是一模一樣的,只需要把選單條、選單、選單項組合到一起,按照一定的佈局,放入到容器中即可。
下表中給出常見的選單相關元件:
選單元件名稱 | 功能 |
---|---|
MenuBar | 選單條 , 選單的容器 。 |
Menu | 選單元件 , 選單項的容器 。 它也是Menultem的子類 ,所以可作為選單項使用 |
PopupMenu | 上下文選單元件(右鍵選單元件) |
Menultem | 選單項元件 。 |
CheckboxMenuItem | 核取方塊選單項元件 |
下圖是常見選單相關元件整合體系圖:
選單相關元件使用:
1.準備選單項元件,這些元件可以是MenuItem及其子類物件
2.準備選單元件Menu或者PopupMenu(右擊彈出子選單),把第一步中準備好的選單項元件新增進來;
3.準備選單條元件MenuBar,把第二步中準備好的選單元件Menu新增進來;
4.把第三步中準備好的選單條元件新增到視窗物件中顯示。
小技巧:
1.如果要在某個選單的選單項之間新增分割線,那麼只需要呼叫Menu的add(new MenuItem(-))即可。
2.如果要給某個選單項關聯快捷鍵功能,那麼只需要在建立選單項物件時設定即可,例如給選單項關聯 ctrl+shif+/ 快捷鍵,只需要:new MenuItem("選單項名字",new MenuShortcut(KeyEvent.VK_Q,true);
案例1:
使用awt中常用選單元件,完成下圖效果
演示程式碼1:
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class SimpleMenu { //建立視窗 private Frame frame = new Frame("這裡測試選單相關元件"); //建立選單條元件 private MenuBar menuBar = new MenuBar(); //建立檔案選單元件 private Menu fileMenu = new Menu("檔案"); //建立編輯選單元件 private Menu editMenu = new Menu("編輯"); //建立新建選單項 private MenuItem newItem = new MenuItem("新建"); //建立儲存選單項 private MenuItem saveItem = new MenuItem("儲存"); //建立退出選單項 private MenuItem exitItem = new MenuItem("退出"); //建立自動換行選擇框選單項 private CheckboxMenuItem autoWrap = new CheckboxMenuItem("自動換行"); //建立複製選單項 private MenuItem copyItem = new MenuItem("複製"); //建立貼上選單項 private MenuItem pasteItem = new MenuItem("貼上"); //建立格式選單 private Menu formatMenu = new Menu("格式"); //建立註釋選單項 private MenuItem commentItem = new MenuItem("註釋"); //建立取消註釋選單項 private MenuItem cancelItem = new MenuItem("取消註釋"); //建立一個文字域 private TextArea ta = new TextArea(6, 40); public void init(){ //定義選單事件監聽器 ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); ta.append("單擊「"+command+"」選單n"); if (command.equals("退出")){ System.exit(0); } } }; //為註釋選單項和退出選單項註冊監聽器 commentItem.addActionListener(listener); exitItem.addActionListener(listener); //為檔案選單fileMenu新增選單項 fileMenu.add(newItem); fileMenu.add(saveItem); fileMenu.add(exitItem); //為編輯選單editMenu新增選單項 editMenu.add(autoWrap); editMenu.add(copyItem); editMenu.add(pasteItem); //為格式化選單formatMenu新增選單項 formatMenu.add(commentItem); formatMenu.add(cancelItem); //將格式化選單新增到編輯選單中,作為二級選單 editMenu.add(new MenuItem("-")); editMenu.add(formatMenu); //將檔案選單和編輯選單新增到選單條中 menuBar.add(fileMenu); menuBar.add(editMenu); //把選單條設定到frame視窗上 frame.setMenuBar(menuBar); //把文字域新增到frame中 frame.add(ta); //設定frame最佳大小並可見 frame.pack(); frame.setVisible(true); } public static void main(String[] args) { new SimpleMenu().init(); } }
案例2:
通過PopupMenu實現下圖效果:
實現思路:
1.建立PopubMenu選單元件;
2.建立多個MenuItem選單項,並新增到PopupMenu中;
3.將PopupMenu新增到目標元件中;
4.為需要右擊出現PopubMenu選單的元件,註冊滑鼠監聽事件,當監聽到使用者釋放右鍵時,彈出選單。
演示程式碼2:
import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class PopupMenuTest { private Frame frame = new Frame("這裡測試PopupMenu"); // 建立PopubMenu選單 private PopupMenu popupMenu = new PopupMenu(); // 建立選單條 private MenuItem commentItem = new MenuItem("註釋"); private MenuItem cancelItem = new MenuItem("取消註釋"); private MenuItem copyItem = new MenuItem("複製"); private MenuItem pasteItem = new MenuItem("儲存"); // 建立一個文字域 private TextArea ta = new TextArea("我愛中華!!!", 6, 40); // 建立一個Panel private Panel panel = new Panel(); public void init() { // 把選單項新增到PopupMenu中 popupMenu.add(commentItem); popupMenu.add(cancelItem); popupMenu.add(copyItem); popupMenu.add(pasteItem); // 設定panel大小 panel.setPreferredSize(new Dimension(300, 100)); // 把PopupMenu新增到panel中 panel.add(popupMenu); // 為panel註冊滑鼠事件 panel.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { boolean flag = e.isPopupTrigger(); // 判斷當前滑鼠操作是不是觸發PopupMenu的操作 if (flag) { // 讓PopupMenu顯示在panel上,並且跟隨滑鼠事件發生的地方顯示 popupMenu.show(panel, e.getX(), e.getY()); } } }); // 把ta新增到frame中間區域中 frame.add(ta); // 把panel新增到frame底部 frame.add(panel, BorderLayout.SOUTH); // 設定frame最佳大小,並可視; frame.pack(); frame.setVisible(true); } public static void main(String[] args) { new PopupMenuTest().init(); } }
公眾號本文地址:https://mp.weixin.qq.com/s/wTmc9O0aDtf_NPSis37-2A
到此這篇關於Java GUI程式設計選單元件範例詳解的文章就介紹到這了,更多相關Java GUI程式設計選單內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45