啊哈哈哈哈哈啊哈哈 2021-07-17 18:27 采纳率: 75%
浏览 80
已采纳

关于石头剪刀布程序添加菜单并实现功能的问题

要求如下:为程序添加菜单;至少 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);
    }
    }

请帮我实现菜单功能。

  • 写回答

1条回答 默认 最新

  • 关注

    你的菜单没有添加action事件,添加事件监听就可以了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月18日
  • 创建了问题 7月17日

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统