저는 방금 코드를 배우고 혼란스럽게 노력했습니다. 그리고 나는 일어날 것을 기대하지 않은 것을 보았습니다. MainApp 클래스에 JLabel이 있고 JLabel을 전달하는 ActionListener (HelloListener)를 만듭니다. 버튼을 누르면 actionPerformed 메소드는 JLabel을 "Hello again!"로 업데이트해야합니다. 그리고 그것은 그렇습니다. 그러나 그것이 왜 혼란 스럽습니까.Java - ActionListener 클래스 변수 일관성 .. 왜 작동합니까?
그러나 새 JLabel을 반환해야한다고 생각했습니다. HelloListener JLabel을 전달할 때 JLabel이 전달 된 후에 HelloListener 클래스의 속성이 아닌가요? 업데이트 할 때 HelloListener의 업데이트 만 수행하면 반환해야합니다.
HelloListener에서 JLabel을 업데이트 할 때 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