传递给听众

时间:2012-05-27 05:44:49

标签: java string swing awt actionlistener

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

4 个答案:

答案 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中快速重写您的应用程序:)

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