Java如何做带复选框的菜单实例代码

网友投稿 281 2022-09-08


Java如何做带复选框的菜单实例代码

说明:

上面是我用java做的扫雷游戏,其中就用到了带复选框式的菜单,原来也是用JCheckBoxMenuItem做的,但发现实在是问题多多,后干脆就用普通的JMenuItem来做,效果也不错。实际上说穿了很简单,就是在菜单的文本上做文章,前面加上一个 √ 即可。通过比较文本内容来判断是显示选中还是未选中,前面加还是不加 √ ,同时其他的文本内容如何变化,就好像扫雷的难度,初级、中级、高级只能选中一个。

代码:

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;

/**

* 功能:游戏窗口

*/

public class GameFrame extends JFrame implements ActionListener

{

private static final long serialVersionUID = 2596945399892762751L;

/** 游戏面板 */

private GamePanel gamePanel;

/** 菜单控件 */

JMenuItem jmi_easy,jmi_normal,jmi_hard;

/**

* 功能:构造函数

*/

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("√ 初级");

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(" 中级");

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(" 高级");

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("关于"http://);

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,"程序出现异常错误,即将退出!\r\n\r\n"+e.toString(),"提示",JOptionPane.ERROR_MESSAGE);

System.exit(0);

}

}

/**

* 功能:事件监听

*/

@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("√ 初级");

this.jmi_normal.setText(" 中级");

this.jmi_hard.setText(" 高级");

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(" 初级");

this.jmi_normal.setText("√ 中级");

this.jmi_hard.setText(" 高级");

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(" 初级");

this.jmi_normal.setText(" 中级");

this.jmi_hard.setText("√ 高级");

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);

}

}

}

上面是扫雷的部分代码,游戏不是重点,重点看建立菜单和点击的代码。有时候解决问题的办法有很多,换个思路就好!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【数字水印】基于离散余弦变换DCT音频数字水印嵌入提取含Matlab源码
下一篇:【指纹识别】基于模板匹配算法实现教室指纹打卡系统含Matlab源码(基于matlab的指纹识别技术)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~