2013-05-14 5 views
1

오류없이 내 모습과 느낌을 업데이트하려고하지만 잘못된 것을 알 수 없습니다.Look & Feel을 성공적으로 업데이트했으나 오류가 계속 발생했습니다.

이 내 창 클래스입니다 :

public class Window extends JFrame { 
    private static final long serialVersionUID = 1L; 

    public Window() { 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setLayout(new MigLayout()); 
     setExtendedState(JFrame.MAXIMIZED_BOTH); 
     setMinimumSize(new Dimension(600, 700)); 
     setVisible(true); 

     setContentPane(new JPanel() { 
      private static final long serialVersionUID = 1L; 

      public void paintComponent(Graphics g) { 
       g.drawImage(new ImageIcon("start.jpg").getImage(), 0, 0, getWidth(),  
        getHeight(), this); 
      } 
     }); 
    } 
} 

내가

public class Main { 
    public static void main(String[] args) { 
     Window.setDefaultLookAndFeelDecorated(true); 
     try { 
      UIManager.setLookAndFeel(new SubstanceGraphiteLookAndFeel()); 
     } 
     catch (UnsupportedLookAndFeelException e) {} 
     Window window = new Window(); 
    } 
} 

는 콘솔 내 오류가이 라인에서 온다라는 UI를 업데이트 (Look & Feel로) 여기서이 내 주입니다 : 창 창 = 새 창();

그런 다음이 줄을 :.. setContentPane (새 인 JPanel() {

하지만 전체 setContentPane의 블록을 삭제하면 오류가 다음 생성자를 가리키는 어떤 도움을 주시면 감사하겠습니다

감사합니다

!
+0

,하지만 오류를 무시? –

+0

오류는 200 줄과 같습니다 : S 그래서 오류를 가리키는 부분을 방금 게시했습니다. –

+0

우선 익명 클래스에서는 정적 참조를 사용할 수 없습니다. Window가 내부 클래스이면, 똑같은 것이 적용됩니다. – MadProgrammer

답변

3
  1. SubstanceGraphiteLookAndFeel()는 invokeLater()

  2. 윈도우 창 = 새로운 윈도우()로 감싸해야 승 마땅한 invokeLater()에 랩 추가, 오라클 튜토리얼을 참조하십시오.

  3. g.drawImage (새 ImageIcon ("start.jpg") .getImage(), 0, 0, getWidth(), getHeight(), this) ;

    • 사용되는 BufferedImage,

    • paintComponent에 모든 마우스에서 호출되는 지역 변수, 키 이벤트 후 아주 열심히, API를 구현 내부 방법과 긴 이미지 아이콘 ("start.jpg")와 같은로드. 된 GetImage() 지역 변수에

    • 로드, 어떤 이벤트가 재 페인트 해고 횟수, repeatly라고

  4. setContentPane (새 인 JPanel() {, 죄송합니다 getMin/Max/PreferredSize

+0

해답을 가져 주셔서 감사합니다. 왜 내가 그 요소들을 invokeLater()로 랩핑해야하는지 간단하게 설명 할 수 있습니까? –

+1

@Maxwell 모든 UI 관련 작업이 EDT (Event Dispatching Thread)에서 수행되는지 확인합니다. Google 더 알고 싶다). +1 –

+1

물질을 EDT에 설정 한 다음 invokeLater, Window window = new Window()로 감싸 줘야합니다. 자세한 내용은 Substant 태그 – mKorbel