2011-11-11 2 views
0

...자바 전달 JFrame 허용? 내가 JFrame의를 확장하는 클래스를 가지고

그때에 할당 변수

JFrame frame = this; 
나는 지금 내가 할 수 밖에 LoginListener라고하는 ActionListener 클래스로이 프레임을 전달해야

> applog를 - 그 JPanel을 확장하고이 클래스가 LoginListener (정보, 로그인의 프레임)

는 그래서이

클래스 확장 프레임처럼의 인스턴스가 먼저 클래스 AppLoginComponents에 전달해야 inComponents -> LoginListener

내가 이것을하는 이유는 사용자가 2 분 이내에 로그인하지 않은 경우 LoginListener가 응용 프로그램을 종료해야하기 때문입니다. 프레임을 처리 할 계획입니다. 나는 정적 변수가 이상적이라고 생각하지 않습니까?

답변

2

아니요, 정적 변수를 사용하지 마십시오. 예, 참고 문헌을 전달하는 것이 좋습니다. SwingUtility 메서드 (getWindowAncestor(Component c))를 통해 포함하는 최상위 창에 대한 참조를 가져올 수도 있습니다.

그러나 이것은 질문을 불러옵니다. 왜 클래스가 JFrame을 확장합니까? JFrame의 메소드를 오버라이드하고 있습니까?

+0

add, setSize, setVisible 및 pack 메소드 만 재정의하십시오. 나는 getWindowAncestor에 대해 몰랐다. 고마워! – unleashed

+0

참조를 전달하거나 SwingUtility의 getWindowAncestor를 사용하는 것이 좋습니까? – unleashed

+0

그래서 실제로 클래스의 생성자에서 호출하지 않고 이러한 메서드를 재정의하고 있습니까? 솔직히 어떤 사람이 선호하는지 모르겠습니다. 나는 GUI가 (pack() 또는 setVisible (true) 최상위 창에서 호출되기 전에) getWindowAncestor를 호출 할 수 없다고 생각한다. 그렇지 않으면 널 (null)을 가지기 쉽다. –

관련 문제