Java如何做帶復(fù)選框的菜單實(shí)例代碼
說明:
????????上面是我用Java做的掃雷游戲,其中就用到了帶復(fù)選框式的菜單,原來也是用JCheckBoxMenuItem做的,但發(fā)現(xiàn)實(shí)在是問題多多,后干脆就用普通的JMenuItem來做,效果也不錯(cuò)。實(shí)際上說穿了很簡單,就是在菜單的文本上做文章,前面加上一個(gè) √ 即可。通過比較文本內(nèi)容來判斷是顯示選中還是未選中,前面加還是不加 √ ,同時(shí)其他的文本內(nèi)容如何變化,就好像掃雷的難度,初級(jí)、中級(jí)、高級(jí)只能選中一個(gè)。
代碼:
package com.game.mine; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JCheckBoxMenuItem; /** * 功能:游戲窗口<br> * 作者:我是小木魚(Lag)<br> */ public class GameFrame extends JFrame implements ActionListener { private static final long serialVersionUID = 2596945399892762751L; /** 游戲面板 */ private GamePanel gamePanel; /** 菜單控件 */ JMenuItem jmi_easy,jmi_normal,jmi_hard; /** * 功能:構(gòu)造函數(shù)<br> */ public GameFrame() { try { //窗口 this.setTitle("掃雷"); this.setLayout(null); this.setResizable(false); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //菜單 JMenuBar jmb_minesweeper = new JMenuBar(); JMenu jm_game = new JMenu("游戲"); jm_game.setFont(new Font("微軟雅黑",Font.PLAIN,12)); JMenuItem jmi_new = jm_game.add(" 開局"); jmi_new.setFont(new Font("微軟雅黑",Font.PLAIN,12)); jmi_new.addActionListener(this); jmi_new.setActionCommand("new"); jm_game.addSeparator(); this.jmi_easy = jm_game.add("√ 初級(jí)"); this.jmi_easy.setFont(new Font("微軟雅黑",Font.PLAIN,12)); this.jmi_easy.addActionListener(this); this.jmi_easy.setActionCommand("easy"); this.jmi_normal = jm_game.add(" 中級(jí)"); this.jmi_normal.setFont(new Font("微軟雅黑",Font.PLAIN,12)); this.jmi_normal.addActionListener(this); this.jmi_normal.setActionCommand("normal"); this.jmi_hard = jm_game.add(" 高級(jí)"); this.jmi_hard.setFont(new Font("微軟雅黑",Font.PLAIN,12)); this.jmi_hard.addActionListener(this); this.jmi_hard.setActionCommand("hard"); jm_game.addSeparator(); JMenuItem jmi_exit = jm_game.add(" 退出"); jmi_exit.setFont(new Font("微軟雅黑",Font.PLAIN,12)); jmi_exit.addActionListener(this); jmi_exit.setActionCommand("exit"); jmb_minesweeper.add(jm_game); JMenu jm_help = new JMenu("幫助"); jm_help.setFont(new Font("微軟雅黑",Font.PLAIN,12)); JMenuItem jmi_about = jm_help.add("關(guān)于"); jmi_about.setFont(new Font("微軟雅黑",Font.PLAIN,12)); jmi_about.addActionListener(this); jmi_about.setActionCommand("about"); jmb_minesweeper.add(jm_help); this.setJMenuBar(jmb_minesweeper); //面板 this.gamePanel = new GamePanel(); this.add(this.gamePanel); //顯示 this.gamePanel.setLevel(this.gamePanel.EASY); this.setSize(this.gamePanel.getWidth() + 6,this.gamePanel.getHeight() + 50); this.setVisible(true); } catch(Exception e) { JOptionPane.showMessageDialog(this,"程序出現(xiàn)異常錯(cuò)誤,即將退出!\r\n\r\n"+e.toString(),"提示",JOptionPane.ERROR_MESSAGE); System.exit(0); } } /** * 功能:事件監(jiān)聽<br> */ @Override public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if("new".equals(command)) { this.gamePanel.newGame(); } else if("easy".equals(command)) { this.jmi_easy.setText("√ 初級(jí)"); this.jmi_normal.setText(" 中級(jí)"); this.jmi_hard.setText(" 高級(jí)"); this.gamePanel.setLevel(this.gamePanel.EASY); this.setSize(this.gamePanel.getWidth() + 6,this.gamePanel.getHeight() + 50); } else if("normal".equals(command)) { this.jmi_easy.setText(" 初級(jí)"); this.jmi_normal.setText("√ 中級(jí)"); this.jmi_hard.setText(" 高級(jí)"); this.gamePanel.setLevel(this.gamePanel.NORMAL); this.setSize(this.gamePanel.getWidth() + 6,this.gamePanel.getHeight() + 50); } else if("hard".equals(command)) { this.jmi_easy.setText(" 初級(jí)"); this.jmi_normal.setText(" 中級(jí)"); this.jmi_hard.setText("√ 高級(jí)"); this.gamePanel.setLevel(this.gamePanel.HARD); this.setSize(this.gamePanel.getWidth() + 6,this.gamePanel.getHeight() + 50); } else if("exit".equals(command)) { System.exit(0); } else if("about".equals(command)) { JOptionPane.showMessageDialog(this,"我是小木魚(Lag)","提示",JOptionPane.INFORMATION_MESSAGE); } } }
? ? ? ? 上面是掃雷的部分代碼,游戲不是重點(diǎn),重點(diǎn)看建立菜單和點(diǎn)擊的代碼。有時(shí)候解決問題的辦法有很多,換個(gè)思路就好!
到此這篇關(guān)于Java如何做帶復(fù)選框的菜單實(shí)例代碼的文章就介紹到這了,更多相關(guān)Java復(fù)選框菜單內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java中對(duì)Redis的緩存進(jìn)行操作的示例代碼
本篇文章主要介紹了java中對(duì)Redis的緩存進(jìn)行操作的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08java編程中拷貝數(shù)組的方式及相關(guān)問題分析
這篇文章主要介紹了java編程中拷貝數(shù)組的方式及相關(guān)問題分析,分享了Java中數(shù)組復(fù)制的四種方式,其次對(duì)二維數(shù)組的簡單使用有一段代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11SpringBoot解決@Component無法注入其他Bean的問題
這篇文章主要介紹了SpringBoot解決@Component無法注入其他Bean的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Mybatis中3種關(guān)聯(lián)關(guān)系的實(shí)現(xiàn)方法示例
這篇文章主要給大家介紹了關(guān)于Mybatis中3種關(guān)聯(lián)關(guān)系的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Java?map和bean互轉(zhuǎn)常用的方法總結(jié)
這篇文章主要給大家介紹了關(guān)于Java中map和bean互轉(zhuǎn)常用方法的相關(guān)資料,平時(shí)日常Java開發(fā),經(jīng)常會(huì)涉及到Java?Bean和Map之間的類型轉(zhuǎn)換,需要的朋友可以參考下2023-09-09