2014-09-06 9 views
1

java.awtpublic void run()이 시작되면 둘 다 빨간색으로 밑줄이 표시됩니다. 마우스로 클릭하면 초기화 프로그램을 생성자로 이동하는 메시지가 나타납니다. 아무도 이것으로 나를 도울 수 있습니까?Java 프로그램의 오류 : "초기화 프로그램을 생성자로 옮깁니다"

public static void main (String[] args) { 
    // TODO code application logic here 
    EmployeeRecord main = new EmployeeRecord() { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new EmployeeRecord().setVisible(true); 
      } 
     )} 
    } 
} 
+0

스티브, 변경에 감사드립니다. 나는 그들을 시도하고 도움이되지 않았다. 내 코드에서 올바른 대괄호를 사용하고 있습니다. –

답변

1

래퍼를 꺼냅니다. 다음은 필요한 모든 것입니다.

public static void main (String[] args) { 

    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new EmployeeRecord().setVisible(true); 
     } 
    }); // <======= Notice the change here too. 
} 

당신은 단지 EventQueue 클래스의 방법 invokeLater를 호출 staticly해야합니다. 당신이하고있는 일을하는 것은 완전히 다른 (불법적 인) 구조입니다. 심지어 불가능합니다. 당신은 기본적으로 익명의 클래스 인스턴스를 만들고 있습니다. 그리고 당신은 같은 생성자를 호출하고 있습니다. 그것은 올바른 경우에도 당신은 불필요한 인스턴스를 생성 할 것

public static void main (String[] args) { 
    // TODO code application logic here 
    EmployeeRecord main = new EmployeeRecord() { 
     { 
      java.awt.EventQueue.invokeLater(new Runnable() { 
       public void run() { 
        new EmployeeRecord().setVisible(true); 
       } 
      }); 
     } 
    }; 
} 

처럼 구성.