java - 带有 JButton 的 ActionListener 问题
问题描述
我正在为我的第一个 Java 课程开发一个游戏。我必须用两个不同的动作监听器创建两个不同的按钮。TreasureButton 从 EmptyButton 扩展而来,每个都有不同的侦听器。
我遇到的问题是,当我尝试在空按钮侦听器中设置测试时,它会覆盖 TreasureButton 侦听器。例如,宝藏按钮文本设置为“$”。如果我将空按钮文本设置为“X”,那么所有按钮都会显示为“X”,即使它是宝藏。我还必须创建最后移动标签和文本字段。当我在空按钮侦听器下运行该方法以将最后一步作为“胸围”执行时,即使我发现宝藏,它也只会说“胸围”。我在我的 TreasureButtonListener 类中尝试了@Override,但它没有改变任何东西。对此有何指导?
import javax.swing.*;
public class EmptyButton extends JButton
{
//has-a TreasureGame
private TreasureGame game;
//has-a TreasureGameView
private TreasureGameView gameView;
public EmptyButton(TreasureGame game, TreasureGameView gameView)
{
super();
setText("X");
this.game = game;
this.gameView = gameView;
addActionListener(new EmptyButtonListener(this, game, gameView));
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
public class TreasureButton extends EmptyButton
{
public TreasureButton(TreasureGame game, TreasureGameView gameView)
{
super(game, gameView);
//setText("$");
addActionListener(new TreasureButtonListener(this, game, gameView));
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class EmptyButtonListener implements ActionListener
{
private EmptyButton button;
//has-a TreasureGame
private TreasureGame game;
//has-a TreasureGameView
private TreasureGameView gameView;
public EmptyButtonListener(EmptyButton button, TreasureGame game, TreasureGameView gameView)
{
this.game = game;
this.button = button;
this.gameView = gameView;
}
public void actionPerformed(ActionEvent e)
{
//button.setText("X");
button.setEnabled(false);
game.reduceTriesLeft();
//game.treasureNotFound();
game.isGameOver();
gameView.updateUI();
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TreasureButtonListener implements ActionListener
{
// Has-a TreasureButton
private TreasureButton button;
private TreasureGame game;
private TreasureGameView gameView;
public TreasureButtonListener(TreasureButton button, TreasureGame game, TreasureGameView gameView)
{
this.button = button;
this.game = game;
this.gameView = gameView;
}
public void actionPerformed(ActionEvent e)
{
button.setText("$");
game.reduceNumberStillHidden();
game.treasureFound();
game.isGameOver();
gameView.updateUI();
}
}
解决方案
推荐阅读
- typescript - 量角器/打字稿(es6):语法错误:无法在模块外使用导入语句
- reactjs - 使用带有反应本机 Web 的 ui 库
- javascript - 我如何从书路中解决问题以在第 78 页做出反应?对于表格组件中的一种方法,我一直在取消定义
- php - 如何让 chrome 浏览器在移动设备上显示 HTML 输入字段选择的文件以及它的扩展名
- javascript - 需要使这个对象数组在 javaScript 中可重用
- javascript - 如何在抓取网页时从 var 股票中获取这些数字?
- google-app-engine - Google App Engine 手动缩放防止重启
- ios - 如何从数组中提取一种类型的值,一个一个地创建一个单独的数组?
- c# - Blazor 自定义身份验证提供程序错误
- bash - 每个 grep 结果的新行分隔符(即使 grep 输出为空)