最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?GUI編程菜單組件實(shí)例詳解

 更新時(shí)間:2022年04月07日 10:18:03   作者:愚生淺末  
在實(shí)際開發(fā)中,除了主界面,還有一類比較重要的內(nèi)容就是菜單相關(guān)組件,可以通過(guò)菜單相關(guān)組件很方便的使用特定的功能,今天通過(guò)本文給大家介紹下Java?GUI編程菜單組件實(shí)例詳解,感興趣的朋友一起看看吧

前面講解了如果構(gòu)建GUI界面,其實(shí)就是把一些GUI的組件,按照一定的布局放入到容器中展示就可以了。在實(shí)際開發(fā)中,除了主界面,還有一類比較重要的內(nèi)容就是菜單相關(guān)組件,可以通過(guò)菜單相關(guān)組件很方便的使用特定的功能,在AWT中,菜單相關(guān)組件的使用和之前學(xué)習(xí)的組件是一模一樣的,只需要把菜單條、菜單、菜單項(xiàng)組合到一起,按照一定的布局,放入到容器中即可。

下表中給出常見的菜單相關(guān)組件:

菜單組件名稱功能
MenuBar菜單條 , 菜單的容器 。
Menu菜單組件 , 菜單項(xiàng)的容器 。 它也是Menultem的子類 ,所以可作為菜單項(xiàng)使用
PopupMenu上下文菜單組件(右鍵菜單組件)
Menultem菜單項(xiàng)組件 。
CheckboxMenuItem復(fù)選框菜單項(xiàng)組件

下圖是常見菜單相關(guān)組件集成體系圖:

菜單相關(guān)組件使用:

1.準(zhǔn)備菜單項(xiàng)組件,這些組件可以是MenuItem及其子類對(duì)象

2.準(zhǔn)備菜單組件Menu或者PopupMenu(右擊彈出子菜單),把第一步中準(zhǔn)備好的菜單項(xiàng)組件添加進(jìn)來(lái);

3.準(zhǔn)備菜單條組件MenuBar,把第二步中準(zhǔn)備好的菜單組件Menu添加進(jìn)來(lái);

4.把第三步中準(zhǔn)備好的菜單條組件添加到窗口對(duì)象中顯示。

小技巧:

1.如果要在某個(gè)菜單的菜單項(xiàng)之間添加分割線,那么只需要調(diào)用Menu的add(new MenuItem(-))即可。

2.如果要給某個(gè)菜單項(xiàng)關(guān)聯(lián)快捷鍵功能,那么只需要在創(chuàng)建菜單項(xiàng)對(duì)象時(shí)設(shè)置即可,例如給菜單項(xiàng)關(guān)聯(lián) ctrl+shif+/ 快捷鍵,只需要:new MenuItem("菜單項(xiàng)名字",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 {
    //創(chuàng)建窗口
    private Frame frame = new Frame("這里測(cè)試菜單相關(guān)組件");
    //創(chuàng)建菜單條組件
    private MenuBar menuBar = new MenuBar();
    //創(chuàng)建文件菜單組件
    private Menu fileMenu = new Menu("文件");
    //創(chuàng)建編輯菜單組件
    private Menu editMenu = new Menu("編輯");
    //創(chuàng)建新建菜單項(xiàng)
    private MenuItem newItem = new MenuItem("新建");
    //創(chuàng)建保存菜單項(xiàng)
    private MenuItem saveItem = new MenuItem("保存");
    //創(chuàng)建退出菜單項(xiàng)
    private MenuItem exitItem = new MenuItem("退出");
    //創(chuàng)建自動(dòng)換行選擇框菜單項(xiàng)
    private CheckboxMenuItem autoWrap = new CheckboxMenuItem("自動(dòng)換行");
    //創(chuàng)建復(fù)制菜單項(xiàng)
    private MenuItem copyItem = new MenuItem("復(fù)制");
    //創(chuàng)建粘貼菜單項(xiàng)
    private MenuItem pasteItem = new MenuItem("粘貼");
    //創(chuàng)建格式菜單
    private Menu formatMenu = new Menu("格式");
    //創(chuàng)建注釋菜單項(xiàng)
    private MenuItem commentItem = new MenuItem("注釋");
    //創(chuàng)建取消注釋菜單項(xiàng)
    private MenuItem cancelItem = new MenuItem("取消注釋");
    //創(chuàng)建一個(gè)文本域
    private TextArea ta = new TextArea(6, 40);
    public void init(){
        //定義菜單事件監(jiān)聽器
        ActionListener listener = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String command = e.getActionCommand();
                ta.append("單擊“"+command+"”菜單\n");
                if (command.equals("退出")){
                    System.exit(0);
                }
            }
        };
        //為注釋菜單項(xiàng)和退出菜單項(xiàng)注冊(cè)監(jiān)聽器
        commentItem.addActionListener(listener);
        exitItem.addActionListener(listener);
        //為文件菜單fileMenu添加菜單項(xiàng)
        fileMenu.add(newItem);
        fileMenu.add(saveItem);
        fileMenu.add(exitItem);
        //為編輯菜單editMenu添加菜單項(xiàng)
        editMenu.add(autoWrap);
        editMenu.add(copyItem);
        editMenu.add(pasteItem);
        //為格式化菜單formatMenu添加菜單項(xiàng)
        formatMenu.add(commentItem);
        formatMenu.add(cancelItem);
        //將格式化菜單添加到編輯菜單中,作為二級(jí)菜單
        editMenu.add(new MenuItem("-"));
        editMenu.add(formatMenu);
        //將文件菜單和編輯菜單添加到菜單條中
        menuBar.add(fileMenu);
        menuBar.add(editMenu);
        //把菜單條設(shè)置到frame窗口上
        frame.setMenuBar(menuBar);
        //把文本域添加到frame中
        frame.add(ta);
        //設(shè)置frame最佳大小并可見
        frame.pack();
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        new SimpleMenu().init();
    }
}

案例2:

?通過(guò)PopupMenu實(shí)現(xiàn)下圖效果:

實(shí)現(xiàn)思路:

1.創(chuàng)建PopubMenu菜單組件;

2.創(chuàng)建多個(gè)MenuItem菜單項(xiàng),并添加到PopupMenu中;

3.將PopupMenu添加到目標(biāo)組件中;

4.為需要右擊出現(xiàn)PopubMenu菜單的組件,注冊(cè)鼠標(biāo)監(jiān)聽事件,當(dāng)監(jiān)聽到用戶釋放右鍵時(shí),彈出菜單。

演示代碼2:

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class PopupMenuTest {
    private Frame frame = new Frame("這里測(cè)試PopupMenu");
    // 創(chuàng)建PopubMenu菜單
    private PopupMenu popupMenu = new PopupMenu();
    // 創(chuàng)建菜單條
    private MenuItem commentItem = new MenuItem("注釋");
    private MenuItem cancelItem = new MenuItem("取消注釋");
    private MenuItem copyItem = new MenuItem("復(fù)制");
    private MenuItem pasteItem = new MenuItem("保存");
    // 創(chuàng)建一個(gè)文本域
    private TextArea ta = new TextArea("我愛中華?。。?, 6, 40);
    // 創(chuàng)建一個(gè)Panel
    private Panel panel = new Panel();
    public void init() {
        // 把菜單項(xiàng)添加到PopupMenu中
        popupMenu.add(commentItem);
        popupMenu.add(cancelItem);
        popupMenu.add(copyItem);
        popupMenu.add(pasteItem);
        // 設(shè)置panel大小
        panel.setPreferredSize(new Dimension(300, 100));
        // 把PopupMenu添加到panel中
        panel.add(popupMenu);
        // 為panel注冊(cè)鼠標(biāo)事件
        panel.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseReleased(MouseEvent e) {
                boolean flag = e.isPopupTrigger();
                // 判斷當(dāng)前鼠標(biāo)操作是不是觸發(fā)PopupMenu的操作
                if (flag) {
                    // 讓PopupMenu顯示在panel上,并且跟隨鼠標(biāo)事件發(fā)生的地方顯示
                    popupMenu.show(panel, e.getX(), e.getY());
                }
            }
        });
        // 把ta添加到frame中間區(qū)域中
        frame.add(ta);
        // 把panel添加到frame底部
        frame.add(panel, BorderLayout.SOUTH);
        // 設(shè)置frame最佳大小,并可視;
        frame.pack();
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        new PopupMenuTest().init();
    }
}

公眾號(hào)本文地址:https://mp.weixin.qq.com/s/wTmc9O0aDtf_NPSis37-2A

到此這篇關(guān)于Java GUI編程菜單組件實(shí)例詳解的文章就介紹到這了,更多相關(guān)Java GUI編程菜單內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Security整合Oauth2實(shí)現(xiàn)流程詳解

    Spring Security整合Oauth2實(shí)現(xiàn)流程詳解

    這篇文章主要介紹了Spring Security整合Oauth2實(shí)現(xiàn)流程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • idea代碼模板設(shè)置方式

    idea代碼模板設(shè)置方式

    這篇文章主要介紹了idea代碼模板設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • SpringBoot3集成swagger文檔的使用方法

    SpringBoot3集成swagger文檔的使用方法

    本文介紹了Swagger的誕生背景、主要功能以及如何在Spring Boot 3中集成Swagger文檔,Swagger可以幫助自動(dòng)生成API文檔,實(shí)現(xiàn)與代碼同步,并提供交互式測(cè)試功能,使用方法包括導(dǎo)入依賴、配置文檔、使用常見注解以及訪問生成的Swagger UI和文檔,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • java如何替換word/doc文件中的內(nèi)容

    java如何替換word/doc文件中的內(nèi)容

    docx格式的文件本質(zhì)上是一個(gè)XML文件,只要用占位符在指定的地方標(biāo)記,然后替換掉標(biāo)記出的內(nèi)容,這篇文章主要介紹了java替換word/doc文件中的內(nèi)容,需要的朋友可以參考下
    2023-06-06
  • Java遞歸造成的堆棧溢出問題及解決方案

    Java遞歸造成的堆棧溢出問題及解決方案

    在Java中,遞歸造成的堆棧溢出問題通常是因?yàn)檫f歸調(diào)用的深度過(guò)大,導(dǎo)致調(diào)用棧空間不足,解決這類問題的一種常見方法是使用非遞歸的方式重寫算法,即使用迭代替代遞歸,需要的朋友可以參考下
    2024-08-08
  • java如何創(chuàng)建一個(gè)jdbc程序詳解

    java如何創(chuàng)建一個(gè)jdbc程序詳解

    使用Java程序來(lái)操作數(shù)據(jù)庫(kù),后者更加直接的話就是使用Java程序來(lái)發(fā)送SQL語(yǔ)句的技術(shù)稱之為:JDBC。下面這篇文章主要給大家介紹了關(guān)于利用java如何創(chuàng)建一個(gè)jdbc程序的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-11-11
  • MyBatis更新時(shí)新值為null時(shí),updateById()更新失敗問題

    MyBatis更新時(shí)新值為null時(shí),updateById()更新失敗問題

    這篇文章主要介紹了MyBatis更新時(shí)新值為null時(shí),updateById()更新失敗問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Java中Array、List、Map相互轉(zhuǎn)換的方法詳解

    Java中Array、List、Map相互轉(zhuǎn)換的方法詳解

    這篇文章主要介紹了Java中Array、List、Map相互轉(zhuǎn)換的方法詳解,在實(shí)際項(xiàng)目開發(fā)中或者一些算法面試題目中經(jīng)常需要用到Java中這三種類型的相互轉(zhuǎn)換,比如對(duì)于一個(gè)整型數(shù)組中尋找一個(gè)整數(shù)與所給的一個(gè)整數(shù)值相同,需要的朋友可以參考下
    2023-08-08
  • springboot中application.yml多環(huán)境生效規(guī)則說(shuō)明

    springboot中application.yml多環(huán)境生效規(guī)則說(shuō)明

    這篇文章主要介紹了springboot中application.yml多環(huán)境生效規(guī)則說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java的HashMap源碼解析

    Java的HashMap源碼解析

    這篇文章主要介紹了Java的HashMap源碼解析,HashMap是一個(gè)用于存儲(chǔ)Key-Value鍵值對(duì)的集合,每一個(gè)鍵值對(duì)是一個(gè)Node,后臺(tái)是用一個(gè)Node數(shù)組來(lái)存放數(shù)據(jù),這個(gè)Node數(shù)組就是HashMap的主干,需要的朋友可以參考下
    2023-11-11

最新評(píng)論

浮山县| 蓬莱市| 沽源县| 泸定县| 呈贡县| 登封市| 买车| 浠水县| 鹤壁市| 荣昌县| 凌云县| 虞城县| 龙山县| 盖州市| 天门市| 吐鲁番市| 黔西| 互助| 治多县| 图片| 尼木县| 余庆县| 谷城县| 灌云县| 桐柏县| 土默特左旗| 灵宝市| 革吉县| 昌都县| 汾西县| 鹰潭市| 咸阳市| 泸定县| 达孜县| 井研县| 呼图壁县| 抚州市| 栾川县| 岑溪市| 柳州市| 革吉县|