您好,登錄后才能下訂單哦!
本篇文章為大家展示了Java是如何做帶復(fù)選框的菜單,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
上面是我用Java做的掃雷游戲,其中就用到了帶復(fù)選框式的菜單,原來也是用JCheckBoxMenuItem做的,但發(fā)現(xiàn)實(shí)在是問題多多,后干脆就用普通的JMenuItem來做,效果也不錯(cuò)。實(shí)際上說穿了很簡(jiǎn)單,就是在菜單的文本上做文章,前面加上一個(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); } } }
上述內(nèi)容就是Java是如何做帶復(fù)選框的菜單,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。