今天写了个程序,主要是用到菜单,不过不知道为什么,点击菜单里的退出后,确没有任何的反应。程序没办法关闭。另外,我想让“难度”菜单变成复选框菜单,但是不会设置,高手帮忙下
我的菜单设计如下所示选择 难度 帮助
开始游戏 简单 帮助
重新开始 中等 关于五子棋
------- 困难
退出 我不知道怎么写才能实现功能,高手们帮忙下!谢谢了
import java.awt.*;
import java.awt.event.*;import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;public class Gobang extends JFrame
{
static Gobang gobang = new Gobang();
static JMenuBar menuBar = new JMenuBar(); //创建菜单条类
static JMenu menu = new JMenu("选择");
static JMenu menu_difficulty = new JMenu("难度"); //英汉互译 difficulty 难度
static JMenu Menu_About = new JMenu("帮助"); //还未实现
//选择
static JMenuItem menuStart = new JMenuItem("开始游戏");
static JMenuItem menuReStart = new JMenuItem("重新开始");
static JMenuItem menuExit = new JMenuItem("退出");
//难度
static JMenuItem easy = new JMenuItem("简单"); //创建复选框选项
static JMenuItem secondary = new JMenuItem("中等");
static JMenuItem difficulty = new JMenuItem("困难");
//帮助
static JMenuItem help = new JMenuItem("帮助");
static JMenuItem about = new JMenuItem("关于五子棋");
static PopupMenu pm = new PopupMenu(""); //创建弹出式菜单 //here
// static JMenuItem esay, secondary, difficulty; //设置难度为弹出式菜单
public static void main(String args[])
{
gobang.setLayout(null); //取消页面设置
gobang.setLocation(100, 80);
gobang.setSize(750, 600);
//菜单栏添加
menu.add(menuStart); //选择菜单添加
menu.add(menuReStart);
menu.addSeparator(); //加一条下划线
menu.add(menuExit); menu_difficulty.add(easy); //难度菜单添加
menu_difficulty.add(secondary);
menu_difficulty.add(difficulty);
Menu_About.add(help); //关于菜单添加
Menu_About.add(about);
menuBar.add(menu);
menuBar.add(menu_difficulty);
menuBar.add(Menu_About);
gobang.add(menuBar);
gobang.setJMenuBar(menuBar); //设置菜单栏为menuBar,也就是总菜单栏
Container contentPane = gobang.getContentPane();
final Panel panel = new Panel();
gobang.setBackground(new Color(255, 182, 147));
contentPane.setBackground(new Color(255, 182, 147));
contentPane.add(panel);
gobang.setResizable(false);
panel.setCursor(new Cursor(Cursor.HAND_CURSOR));
gobang.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gobang.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
JMenuItem mi = (JMenuItem)e.getSource(); //取得引发事件的对象
String miLab = mi.getLabel(); //取得菜单项的文字标题
if(miLab == "关于五子棋" )
{
}
else if(miLab == "帮助" )
{
JOptionPane.showMessageDialog(null, "木有帮助"); //打开不了网页
ProcessBuilder Tomlive = new ProcessBuilder("iexplore.exe",
"http://hi.csdn.net/space-5376767.html");
ProcessBuilder Gobang_skill = new ProcessBuilder("iexplore.exe",
"http://club.topsage.com/thread-799722-1-1.html");
}
else if(miLab == "开始游戏")
{
}
else if(miLab == "重新开始")
{
}
else if(miLab == "退出")
{
System.exit(0);
}
else if(miLab == "简单")
{
}
else if(miLab == "中等")
{
}
else if(miLab == "困难")
{
}
}
}
我的菜单设计如下所示选择 难度 帮助
开始游戏 简单 帮助
重新开始 中等 关于五子棋
------- 困难
退出 我不知道怎么写才能实现功能,高手们帮忙下!谢谢了
import java.awt.*;
import java.awt.event.*;import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;public class Gobang extends JFrame
{
static Gobang gobang = new Gobang();
static JMenuBar menuBar = new JMenuBar(); //创建菜单条类
static JMenu menu = new JMenu("选择");
static JMenu menu_difficulty = new JMenu("难度"); //英汉互译 difficulty 难度
static JMenu Menu_About = new JMenu("帮助"); //还未实现
//选择
static JMenuItem menuStart = new JMenuItem("开始游戏");
static JMenuItem menuReStart = new JMenuItem("重新开始");
static JMenuItem menuExit = new JMenuItem("退出");
//难度
static JMenuItem easy = new JMenuItem("简单"); //创建复选框选项
static JMenuItem secondary = new JMenuItem("中等");
static JMenuItem difficulty = new JMenuItem("困难");
//帮助
static JMenuItem help = new JMenuItem("帮助");
static JMenuItem about = new JMenuItem("关于五子棋");
static PopupMenu pm = new PopupMenu(""); //创建弹出式菜单 //here
// static JMenuItem esay, secondary, difficulty; //设置难度为弹出式菜单
public static void main(String args[])
{
gobang.setLayout(null); //取消页面设置
gobang.setLocation(100, 80);
gobang.setSize(750, 600);
//菜单栏添加
menu.add(menuStart); //选择菜单添加
menu.add(menuReStart);
menu.addSeparator(); //加一条下划线
menu.add(menuExit); menu_difficulty.add(easy); //难度菜单添加
menu_difficulty.add(secondary);
menu_difficulty.add(difficulty);
Menu_About.add(help); //关于菜单添加
Menu_About.add(about);
menuBar.add(menu);
menuBar.add(menu_difficulty);
menuBar.add(Menu_About);
gobang.add(menuBar);
gobang.setJMenuBar(menuBar); //设置菜单栏为menuBar,也就是总菜单栏
Container contentPane = gobang.getContentPane();
final Panel panel = new Panel();
gobang.setBackground(new Color(255, 182, 147));
contentPane.setBackground(new Color(255, 182, 147));
contentPane.add(panel);
gobang.setResizable(false);
panel.setCursor(new Cursor(Cursor.HAND_CURSOR));
gobang.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gobang.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
JMenuItem mi = (JMenuItem)e.getSource(); //取得引发事件的对象
String miLab = mi.getLabel(); //取得菜单项的文字标题
if(miLab == "关于五子棋" )
{
}
else if(miLab == "帮助" )
{
JOptionPane.showMessageDialog(null, "木有帮助"); //打开不了网页
ProcessBuilder Tomlive = new ProcessBuilder("iexplore.exe",
"http://hi.csdn.net/space-5376767.html");
ProcessBuilder Gobang_skill = new ProcessBuilder("iexplore.exe",
"http://club.topsage.com/thread-799722-1-1.html");
}
else if(miLab == "开始游戏")
{
}
else if(miLab == "重新开始")
{
}
else if(miLab == "退出")
{
System.exit(0);
}
else if(miLab == "简单")
{
}
else if(miLab == "中等")
{
}
else if(miLab == "困难")
{
}
}
}
解决方案 »
- 怎么样得到时间差的秒数.
- 为什么在Linux环境下的eclipse中swing代码移到myeclipse中生成的页面就乱码
- 将几个值,以逗号分隔,存放在字符串str中
- Struts2 Action中如何用线程,最好是线程池来管理 请大家看看
- 想做一个jtable,然后可以根据用户选择来判断需要哪列和哪行
- JAVAC 带有包的问题
- class Hello 与 class HELLO 编译时候的迷惑!
- jb中的一个小问题,关于用向导的
- 谁会?
- 哪里有JSWDK(JavaServer Web Development Kit 1.0.1)下载???
- JFrame中remove的使用
- 新版本jdk中Integer的问题
下面是我修改后的程序,注意看其中的一些注释。import java.awt.*;
import java.awt.event.*;import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButtonMenuItem;public class Gobang extends JFrame implements ActionListener
{
static Gobang gobang = new Gobang();
static JMenuBar menuBar = new JMenuBar(); //创建菜单条类
static JMenu menu = new JMenu("选择");
static JMenu menu_difficulty = new JMenu("难度"); //英汉互译 difficulty 难度
static JMenu Menu_About = new JMenu("帮助"); //还未实现
//选择
static JMenuItem menuStart = new JMenuItem("开始游戏");
static JMenuItem menuReStart = new JMenuItem("重新开始");
static JMenuItem menuExit = new JMenuItem("退出");
//难度
static JRadioButtonMenuItem easy = new JRadioButtonMenuItem("简单"); //创建复选框选项
static JRadioButtonMenuItem secondary = new JRadioButtonMenuItem("中等");
static JRadioButtonMenuItem difficulty = new JRadioButtonMenuItem("困难");
//帮助
static JMenuItem help = new JMenuItem("帮助");
static JMenuItem about = new JMenuItem("关于五子棋"); static PopupMenu pm = new PopupMenu(""); //创建弹出式菜单 //here// static JMenuItem esay, secondary, difficulty; //设置难度为弹出式菜单 public static void main(String args[])
{
gobang.setLayout(null); //取消页面设置
gobang.setLocation(100, 80);
gobang.setSize(750, 600);
//给菜单项注册监听器
menuExit.addActionListener(gobang);
//.......
//其他的组件我就不添加了,你自己添加吧
//对于三个难度的JRadioButtonMenuItem,需要添加ButtonGroup以使得只能选中三个之一
//说明一下,用JCheckBoxMenuItem不合适,不应用是复选,难度当然应该是单选
ButtonGroup bg=new ButtonGroup();
bg.add(easy);
bg.add(secondary);
bg.add(difficulty);
//菜单栏添加
menu.add(menuStart); //选择菜单添加
menu.add(menuReStart);
menu.addSeparator(); //加一条下划线
menu.add(menuExit); menu_difficulty.add(easy); //难度菜单添加
menu_difficulty.add(secondary);
menu_difficulty.add(difficulty); Menu_About.add(help); //关于菜单添加
Menu_About.add(about); menuBar.add(menu);
menuBar.add(menu_difficulty);
menuBar.add(Menu_About);
gobang.add(menuBar); gobang.setJMenuBar(menuBar); //设置菜单栏为menuBar,也就是总菜单栏 Container contentPane = gobang.getContentPane();
final Panel panel = new Panel();
gobang.setBackground(new Color(255, 182, 147));
contentPane.setBackground(new Color(255, 182, 147));
contentPane.add(panel);
gobang.setResizable(false);
panel.setCursor(new Cursor(Cursor.HAND_CURSOR));
gobang.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); gobang.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
JMenuItem mi = (JMenuItem)e.getSource(); //取得引发事件的对象
String miLab = mi.getLabel(); //取得菜单项的文字标题
if(miLab.equals("关于五子棋") )
{ }
else if(miLab.equals("帮助") )
{
JOptionPane.showMessageDialog(null, "木有帮助"); //打开不了网页
ProcessBuilder Tomlive = new ProcessBuilder("iexplore.exe",
"http://hi.csdn.net/space-5376767.html");
ProcessBuilder Gobang_skill = new ProcessBuilder("iexplore.exe",
"http://club.topsage.com/thread-799722-1-1.html");
}
else if(miLab.equals("开始游戏"))
{
}
else if(miLab.equals("重新开始"))
{
}
else if(miLab.equals("退出"))
{
System.exit(0);
}
else if(miLab.equals("简单"))
{
}
else if(miLab.equals("中等"))
{
}
else if(miLab.equals("困难"))
{
}
}
}
import java.awt.event.*;
import javax.swing.*;
/**
* 2011-6-7 16:45:55
* @author Administrator
*/
public class TJMenu {
JFrame frame;
Container contentPane;
JMenuBar menuBar;
JMenu fileMenu,editMenu,helpMenu;
JMenuItem fmOpen,fmClose,fmNew;
JMenuItem emUndo,emCut,emCopy,emFind;
JLabel label;
public TJMenu(){
frame=new JFrame("菜单测试");
contentPane=frame.getContentPane();
setMenu();
contentPane.add(menuBar,BorderLayout.NORTH);
label=new JLabel("没有操作");
label.setHorizontalAlignment(JLabel.CENTER);
label.setPreferredSize(new Dimension(400,400));
contentPane.add(label,BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public void setMenu(){
menuBar=new JMenuBar();
fileMenu=new JMenu("文件(F)");
fileMenu.setMnemonic('f');
editMenu=new JMenu("编辑(E)");
editMenu.setMnemonic('e');
helpMenu=new JMenu("帮助(H)");
helpMenu.setMnemonic('h');
menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(helpMenu);
fmOpen=new JMenuItem("打开(o)", 'o');
fmOpen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
label.setText("打开");
}
});
fmOpen.setAccelerator(KeyStroke.getKeyStroke('O', InputEvent.CTRL_MASK));
fmClose=new JMenuItem("关闭(c)",'c');
fmClose.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
label.setText("关闭");
}
});
fmNew=new JMenuItem("新建(n)",'n');
fmNew.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
label.setText("新建");
}
});
fileMenu.add(fmOpen);
fileMenu.add(fmNew);
fileMenu.add(fmClose);
emFind=new JMenuItem("查找(F)",'f');
emFind.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
label.setText("查找");
}
});
emCut=new JMenuItem("剪切(T)",'t');
emCut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
label.setText("剪切");
}
});
emCopy=new JMenuItem("复制(C)",'c');
emCopy.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
label.setText("复制");
}
});
editMenu.add(emFind);
editMenu.add(emCopy);
editMenu.add(emCut);
}
public static void main(String args[]){
new TJMenu();
}
}
谢谢大家