저는 학생이고 그래픽을 시작했습니다. 나는 actionListener를 사용하여 두 가지 과제를 수행했다. 두 과제에서 내 생성자는이 코드를 가지고 :actionListener 사용하기
JButton.setActionListener(this) ;
그래서 여기에 내 질문에 내가 다른 클래스를 사용하는 경우 대신 "이"키워드로, 무슨 일이 일어날 지입니까?
전은
JButton.setActionListener(someClass) ;
저는 학생이고 그래픽을 시작했습니다. 나는 actionListener를 사용하여 두 가지 과제를 수행했다. 두 과제에서 내 생성자는이 코드를 가지고 :actionListener 사용하기
JButton.setActionListener(this) ;
그래서 여기에 내 질문에 내가 다른 클래스를 사용하는 경우 대신 "이"키워드로, 무슨 일이 일어날 지입니까?
전은
JButton.setActionListener(someClass) ;
(심지어 익명 클래스가 허용됩니다). 그래서 당신은 같은 것을 수행 할 수 있습니다
new JButton().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//YOUR CODE
}
});
을 또는 당신은 다른 클래스를 구현 (호출 푸 수 있습니다) 및
new JButton().addActionListener(new Foo());
로 추가 그리고 경우에 당신은 함수형 프로그래밍처럼 당신은 또한 사용할 수 있습니다 람다 식;)
분명히 Foo.class는 ActionListener를 구현해야합니다. –
그것은 즉, 클래스 someClass
해야 actionperformed()
방법 등의 구현 방법과 함께 implements
ActionListener
그.
처럼 : 당신의 ActionListener의 인스턴스를 추가 할 수 있습니다
public class SomeClass implements ActionListener {
public SomeClass() {
//Could do things here
}
public void actionPerformed(ActionEvent e) {
//DDo things when button is clicked.
System.out.println("The button has been clicked");
}
}
'Button'은 AWT 기반 클래스로, 사용하지 않는 것이 가장 좋습니다. – MadProgrammer
정확히 @MadProgrammer, 죄송합니다. –
그것은 많은 것들에 달려 있습니다. 먼저 두 클래스 모두'ActionListener'를 구현해야합니다. 다른 클래스를 사용하면 버튼이 정의 된 클래스에 대한 참조를 잃을 수 있습니다 (여전히 ActionEvent # getSource 메소드를 통해 참조를 얻을 수는 있지만 클래스에 액세스 할 수 없음을 의미 함) – MadProgrammer
[버튼, 체크 박스 및 라디오 버튼 사용 방법] (http://docs.oracle.com/javase/tutorial/uiswing)을 참조하십시오. /components/button.html) 및 [Action Listener 작성 방법] (http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html) – MadProgrammer
기본적으로 올바르게 수행하고 있습니다. 'this'는 기존 클래스에 메소드를 추가 할 수 있고 코드 공간을 적게 차지하기 때문에 짧은 예제에서 많이 사용됩니다. 일반적으로 그런 클래스를 재사용하고 싶지는 않지만 걱정을 분리하고 싶으므로 다른 클래스를 액션 리스너로 사용해야합니다. – markspace