Flask接口签名sign原理与实例代码浅析
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~