0

是否可以将 a 传递给Stringa ActionListener?我正在创建一个猜数游戏,我需要将选择的难度传递给ActionListener,因为它是从打开的第一个 GUI 传递的。Game()当它直接传递给构造函数时,我该怎么做?

4

4 回答 4

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();
            }
        }
    });
于 2012-05-27T05:52:48.937 回答
0

字符串从何而来?您可以将该组件传递给ActionListener构造时。例如,您的字符串来自一个JLabel对象。然后

class GuessNumberActionListener implements ActionListener {
    private JLabel difficulty;

    public GuessNumberActionListener(JLabel difficulty) {
        this.difficulty = difficulty;
    }

    // implement other methods
}

然后在你的动作监听器中,你可以访问/更新你想要的。

于 2012-05-27T05:54:15.370 回答
0

ActionListener 是一个接口。尝试使用继承扩展接口的功能。这会成功的

于 2012-05-27T05:56:25.507 回答
-1

你当然可以。有很多方法,但其中之一是将其传递给ActionListener's 构造函数:

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 快速重写你的应用程序 :)

http://java.sun.com/products/jfc/tsc/articles/architecture/

于 2012-05-27T05:52:37.970 回答