2014-05-24 5 views
0

나는 ActionListener을 구현하는 클래스가 있습니다. 내 actionPerformed() 메서드는 정상적으로 실행됩니다. 그러나 내 프로그램이 실행되기 전에 한 번해야 할 일이 있습니다. actionPerformed(). 나는 booleanactionPerformed()에 넣을 수 있고 그런 식으로 한 번만 실행할 수 있습니다. 그러나 나는 더 깨끗한 것을 찾고있었습니다. 내가하려는 일을 위해 완전히 구성된 객체가 필요하기 때문에 나는 단지 생성자를 사용할 수 없다. initialize() 또는 start()과 같은 메서드를 추가하는 방법이 있습니까? actionPerformed()가 시작되기 전에 실행해야합니까?actionPerformed() 전에 initialize()

일부 샘플 코드 : 당신이 원하는 경우

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class Game implements ActionListener { 

    public Game() { 
     // Constructor 
    } 

    public void initialize() { 
     // I want a method of some sort here which is run before the main game 
     // loop so I can set it up 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     // main game runs 
    } 

} 
+0

'완전히 생성 된 객체가 필요합니다. '- 생성자의 끝에 코드를 추가하십시오. actionPerformed() 메서드는 객체를 구성하는 것과 아무런 관련이 없습니다. actionPerformed() 메서드를 호출하려면 먼저 객체를 만들어야합니다. – camickr

+0

개체를 만들 때마다 initialize()를 실행 하시겠습니까? –

+0

@camickr 불행히도 나는 할 수 없습니다. 왜냐하면 나는 물건의 셋업을 위해서 Object 자체의 인스턴스가 필요하기 때문이다. 확실히 국수 흠집꾼? – Evorlor

답변

0

은 우리가 객체를 생성 할 때마다 일이 초기화 인스턴스 초기화 블록 (IIB)를 사용할 수 있습니다.

및 초기화를 한 번만 수행하려는 경우 정적 초기화 블록 (SIB).

귀하의 경우에는 객체 생성을 원하지만 객체를 작성하기 전에 필요합니다.

그렇게
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class Game implements ActionListener { 

    public Game() { 
     // Constructor 
    } 

    { 
     // I want a method of some sort here which is run before the main game 
     // loop so I can set it up 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     // main game runs 
    } 

} 

다음 주 같은 IIB 블록 이동 : 내가 초기화 방법 서명을 제거하고 IIB을했다. 귀하의 요구 사항을 충족시킬 것입니다. 당신이 당신의 생성자 전에

Game g = new Game();을 수행 할 때 는 Game()IIB 블록이 실행을 실행하면 actionPerformed() 메소드를 호출하는 모든 설정을해야합니다.

+0

그래서 여기서 시작 메뉴와 같은 것을하고 싶다면 자체 ActionListener를 가진 새로운 스레드를 만들겠습니까? 그리고이 스레드가 죽을 때까지 actionPerformed가 호출되지 않았습니까? – Evorlor

+0

오, 그래서 내 개체가 contstructed 전에 필드를 설정? 그 필드들로 엉망이 될 수 있기 전에 인스턴스화 될 객체가 필요합니다. – Evorlor

+0

방금이 글을 읽었습니다. 그리고 이것이 내가 찾고있는 것이라고 생각하지 않습니다. 그래도 고마워. 뭔가 새로운 것을 배웠습니다. :) – Evorlor