java - 在我的游戏中实现 ActionListener 第 2 部分

标签 java swing actionlistener

回顾一下我的上一个问题,我是一位 15 岁的 stackoverflow 社区新手。我目前正在尝试使用java独立开发一个剪刀石头布游戏。我认为参与这个项目将是一次有益的经历,可以帮助我学习 Java 及其基础知识。我对java编程语言有点陌生,所以请不要批评我,我正在通过尝试和错误慢慢学习。对于这个特定的项目,我决定使用 Eclipse,因为与其他 IDE 相比,我更喜欢它的用户界面。不管怎样,我决定实现 JPanel 来让游戏更加直观。我的代码如下,从我的 Eclipse 项目复制并粘贴:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class prompt extends JPanel implements ActionListener {      
    public static void main(String []args) {
        JPanel panel = new JPanel();
        JButton rockButton = new JButton("ROCK");
        JButton scissorsButton = new JButton("SCISSORS");
        JButton paperButton = new JButton("PAPER");
        JFrame choicePrompt = new JFrame("Rock, Paper, Scissors Game");
        choicePrompt.add(panel);
        choicePrompt.setSize(300, 300);
        choicePrompt.setVisible(true);
        panel.add(rockButton);
        panel.add(scissorsButton);
        panel.add(paperButton);

        rockButton.addActionListener(new ActionListener() {
            public void rockChosen(ActionEvent r)
            {
                JLabel rock = new JLabel("You have chosen Rock!");
                panel.add(rock);
            }
        }
        scissorsButton.addActionListener(new ActionListener() {
            public void scissorsChosen(ActionEvent s)
            {
                JLabel scissors = new JLabel("You have chosen Scissors!");
                panel.add(scissors);
            }               
        }
        paperButton.addActionListener(new ActionListener() {
            public void paperChosen(ActionEvent p) 
            {
                JLabel paper = new JLabel("You have chosen Paper!");
                panel.add(paper);
            }   
        }
    }
}

在向 JPanel 添加按钮时我的 ActionListeners 有什么问题?我希望这个程序的工作方式是,当用户单击石头、布或剪刀时,它会显示 JLabel 以供他们决定。所有其他“事情”我都可以自己做。

最佳答案

您的代码甚至不应该编译,如果是这种情况并且您来这里寻求帮助,您需要通知我们这一点并发布所有编译错误消息,指出哪一行导致了这些错误。建议:

  • 不要让您的类扩展 ActionListener。
  • 为每个 JButton 提供一个匿名内部类,与您正在做的类似,但该内部类可以编译并具有 actionPerformed 方法。
  • 在该方法中,不要向 GUI 添加新的 JLabel,因为在按下按钮时继续添加新组件是没有意义的。相反,让 actionPerformed 在已属于 GUI 一部分的 JLabel 上调用 setText(...)
  • 类名称的首字母大写以符合 Java 命名标准。

关于java - 在我的游戏中实现 ActionListener 第 2 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24109621/

相关文章:

java - 对零、一和二的数组进行排序

java - 如何解决 "Caused by: java.lang.IllegalStateException: The file is locked: nio:/Development/hiber/data/contactmgr.mv.db [1.4.192/7]"

java - 无需身份验证/没有发件人密码即可发送 java 电子邮件

java - 使用 Nimbus 外观时 writeObject() 期间出现 NullPointerException

java - Java 中添加到 Jlist 时出现空指针异常

java - JTextPane 中的监听器

java - 使用 Java Swing 控件的派生类为自己创建监听器

java - Java/Swing 有任何(真正的)Office 2007 外观吗?

java - 谢尔宾斯基三角

java - 为数组按钮上的按钮设置 onclickListener 的最佳实践