我刚刚尝试学习和搞乱代码。我遇到了一些我不希望发生的事情。我在MainApp类中有一个JLabel,我创建了一个传递JLabel的ActionListener(HelloListener)。当按下按钮时,actionPerformed方法应该将JLabel更新为“再次Hello!”。它确实如此,但它为什么会让我困惑。Java - ActionListener类的变量一致性..为什么这个工作?
不过,我想我会返回新JLabel的?当我传递HelloListener JLabel时,是不是JLabel在HelloListener类的属性通过后?所以当它更新时它只会更新HelloListener中的一个,然后我将不得不返回它?
为什么当我更新了的JLabel的HelloListener它也是在MainApp类更新?
下面的代码:
public class MainApp extends JFrame {
public static void main(String[] args) {
new MainApp();
}
public MainApp() {
setLayout(new GridLayout (2,1));
setSize(200,200);
JLabel jl = new JLabel("Hello!");
add(jl);
JButton jb = new JButton("Click me!");
jb.addActionListener(new HelloListener(jl));
add(jb);
setVisible(true);
}
}
和
public class HelloListener implements ActionListener {
JLabel jl;
public HelloListener(JLabel jl) {
this.jl = jl;
}
@Override
public void actionPerformed(ActionEvent arg0) {
jl.setText("Hello again!");
}
}
看看我的[对类似问题的回答](http://stackoverflow.com/a/10077580/544963)以获取有关如何执行此操作的说明。如果您需要进一步的帮助,请询问。 :) – fireshadow52 2012-04-10 12:34:29