是否可以将String
传递给ActionListener
?我正在创建一个数字猜谜游戏,我需要将选择的难度传递给ActionListener
,因为它是从第一个打开的GUI传递的。我怎么做,因为它直接传递给Game()
构造函数?
答案 0 :(得分:0)
让ActionListener访问包含猜测结果的变量。
我会做类似的事情:
final JTextArea textArea = new JTextArea();
JButton button =new JButton("press");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
String text = textArea.getText();
if (text.equals("something")) {
doSomething();
} else {
doSomethingElse();
}
}
});
答案 1 :(得分:0)
字符串来自哪里?您可以在构造时将该组件传递给ActionListener
。例如,您的字符串来自JLabel
对象。然后
class GuessNumberActionListener implements ActionListener {
private JLabel difficulty;
public GuessNumberActionListener(JLabel difficulty) {
this.difficulty = difficulty;
}
// implement other methods
}
然后在你的动作监听器中,你可以访问/更新你想要的东西。
答案 2 :(得分:0)
ActionListener是一个接口。尝试使用继承扩展接口的功能。这将做到这一点
答案 3 :(得分:-1)
当然可以。有很多方法,但其中一种方法是将它传递给ActionListener
的构造函数:
public class MyClass implements ActionListener {
private int difficultyLevel;
public MyClass(int difficultyLevel) {
this.difficultyLevel = difficultyLevel;
}
public void actionPerformed(ActionEvent e) {
...//code that reacts to action and does something based on difficultyLevel
}
}
更新:
看起来警察的设计模式今天全力以赴。您可能希望在开始拍摄之前在MVC中快速重写您的应用程序:)