关于石头剪刀布程序添加菜单并实现功能的问题
问题描述:
要求如下:为程序添加菜单;至少 2 个菜单:结果显示方式和关于游戏;结果显示方式菜单有 3 个菜单项:文本显示、图形显示、结束游戏;实现菜单中的功能,自行搜索能体现石头、剪刀、布的图形或图片,用这些图形或图片显示游戏结果。
package 日常;
import java.awt.*; //引入抽象窗口工具类包;
import java.awt.event.*; //引入事件驱动包;
import javax.swing.*; //引入GUI工具包;
//定义一个窗口类,该类实现 ActionListener 接口;
@SuppressWarnings("serial")
public class ceshi extends JFrame implements ActionListener{
JButton jiandao,shitou,bu,clear; //定义 JButton 对象;
JPanel pane12,panel1; //定义 JPanel 对象;
JLabel label; //定义 JLabel 对象;
JMenu menu1,menu2;
static JMenuBar bar;
JMenuItem item1,item2,item3;
public ceshi() {
setTitle("石头剪刀布"); //设置窗体标题,修改标题为“石头剪刀布游戏”;
setLocation(250,250); //设置窗体左上顶点坐标;
setSize(300,300); //设置窗体大小,修改窗体大小为:350×350;
panel1 =new JPanel(); //创建 JPanel 对象;
panel1.setBackground(Color.yellow); //设置 panel1 的背景颜色为黄色;
shitou = new JButton("石头"); //创建 JButton 对象,并在按钮上显示“石头”;
jiandao =new JButton("剪刀"); //创建 JButton 对象,并在按钮上显示“剪刀”;
bu = new JButton("布"); //创建 JButton 对象,并在按钮上显示“布”;
clear = new JButton("清空"); //创建 JButton 对象,并在按钮上显示“清空”;
pane12=new JPanel(); //创建 JPannel 对象;
pane12.setBackground(Color.green); //设置 panel2 的背景颜色为绿色;
label =new JLabel("选择剪刀、石头、布开始游戏"); //创建JLabel对象,并显示“选择剪刀、石头、布开始游戏”;
shitou.addActionListener(this); //给 shitou 添加事件监听器;
bu.addActionListener(this); //给 bu 添加事件监听器;
jiandao.addActionListener(this); //给 jiandao 添加事件监听器;
clear.addActionListener(this); //给 clear 添加事件监听器;
panel1.add(shitou); //把 shitou 放进 panel1 中;
panel1.add(jiandao); //把 jiandao 放进 panel1中;
panel1.add(bu); //把 bu 放进panel1中;
panel1.add(clear); //把 clear 放进panel1中;
pane12.add(label); //把 label 放进panel1中;
add(panel1,BorderLayout.NORTH); //把panel1放在上方
add(pane12,BorderLayout.CENTER); //把panel2放在中央
bar = new JMenuBar();
menu1 = new JMenu("结果显示方式");
menu2 = new JMenu("关于游戏");
item1 = new JMenuItem("文本显示");
item2 = new JMenuItem("图形显示");
item3 = new JMenuItem("结束游戏");
menu1.add(item1);
menu1.add(item2);
menu1.add(item3);
bar.add(menu1);
bar.add(menu2);
this.setJMenuBar(bar);
}
//实现 ActionListener 接口方法,当按下按钮就会调用该方法,可以称为事件响应器;
public void actionPerformed(ActionEvent e) {
if(e.getSource()==shitou) { //如果你按下的是 shitou 按键时,就会执行以下操作;
int i=((int)(Math.random()*10))%3; //定义一个 int 型变量 i,利用 Math.random()函数获取随机数,因为*10 所以随机数区间为[0,10),最后强制转换为 int 型,再除 3 取余,最后的赋值给 i;
switch(i) //i 为 0 时就执行 case 0 操作,以此类推;
{
case 0 :label.setText("你出石头,电脑出石头,平局!");break; //当 i=0 时,执行后续操作,到 break 结束;(必须要添加 break,不然会一直执行下去);
case 1 :label.setText("你出石头,电脑出剪子,恭喜你赢了!");break; //当 i=1 时,与上同理;
case 2 :label.setText("你出石头,电脑出布,很遗憾你输了!");break; //当 i=2 时,与上同理;
}}
else if (e.getSource()==bu) { //如果你按下的是 bu 按键时,与上同理;
int i=((int)(Math.random()*10))%3;
switch(i)
{
case 0 :label.setText("你出布,电脑出布,平局!");break;
case 1 :label.setText("你出布,电脑出石头,恭喜你赢了!");break;
case 2 :label.setText("你出布,电脑出剪刀,很遗憾你输了!");break;
}}
else if (e.getSource()==jiandao) { //当你按下 jiandao 按键时,与上同理;
int i=((int)(Math.random()*10))%3;
switch(i)
{
case 0 :label.setText("你出剪刀,电脑出剪刀,平局!");break;
case 1 :label.setText("你出剪刀,电脑出布,恭喜你赢了!");break;
case 2 :label.setText("你出剪刀,电脑出石头,很遗憾你输了!");break;
}}
else if(e.getSource()==clear)//当你按下 clear 按键时,直接输出 label.setText();
{ label.setText("选择剪刀、石头、布开始游戏"); }
}
public static void main(String agrs[]) {//添加一个主函数,对窗体显示情况进行测试;
ceshi frame =new ceshi(); //初始化窗体对象;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体关闭按钮;
frame.setVisible(true); //使窗体可见;
frame.setJMenuBar(bar);
}
}
请帮我实现菜单功能。
答
你的菜单没有添加action事件,添加事件监听就可以了。