2013-05-16 5 views
1

간단하게 유지합시다. 내 코드는 컴파일, 내가 (java CLASSNAME 사용)을 실행할 때,이 내 명령 프롬프트 오류입니다 :프로그램이 컴파일되지만 실행되지 않습니다.

참고로
Exception in thread "main" java.awt.IllegalComponentStateException: The frame is 
decorated 
     at java.awt.Frame.setBackground(Frame.java:986) 
     at RPG.<init>(RPG.java:147) 
     at RPG.main(RPG.java:69) 

,이 라인 147

Map.setBackground(new Color(0,0,0,0)); 

의 코드 라인의 코드가 69

Game.setContentPane(new RPG()); 

두 개의 서로 다른 JFrame이지만 충돌이 있습니까? 이 불분명 것 또는 내가 많이 이해하고 있지 않다 경우, 난 그냥 내 프로그램을 시작할 수없는 이유를 알고 싶습니다 경우

public static void main(String[] args) { 
    try { 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    } 
    catch (Exception unused) { } 
    Game.setTitle(" "); 
    Game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    Game.setContentPane(new RPG()); 
    Game.setDefaultLookAndFeelDecorated(true); 
    Game.pack(); 
    Game.setSize(850,500); 
    Game.setLocationRelativeTo(null); 
    Game.setResizable(false); 
} 
    public RPG(){ 
    sgame = 1; 
    Game.setVisible(false); 
    JFrame Map = new JFrame(); 
     Map.setTitle("Map"); 
     Map.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     Map.setBackground(new Color(0,0,0,0)); 
    Map.setUndecorated(true); 
    JLabel testLabel = new JLabel(new ImageIcon(getClass().getResource("Title.png"))); 
     Map.add(testLabel); 
     Map.setSize(200,200); 
     Map.setLocation(0, 250); 
     Map.setResizable(false); 
     Map.setVisible(true); 
    Launcher(); 
    } 

죄송합니다 : 은 여기 내 소스에서 전체 조각입니다.

답변

2

.setBackground()를 호출하기 전에 Map을 장식으로 설정해보십시오.

+0

와우. 언더 코팅을 설정하기 전에 배경을 설정하면 프로그램이 중단되는 이유는 무엇입니까? 나를 설명 할 수 있니? – user2388169

+0

책처럼 생각하십시오. Java는 제시된 순서대로 코드를 실행합니다. 새 프레임을 처음 만들 때 (JFrame Map = new JFrame();), 꾸며졌지만 완전히 새로운 프레임을 만듭니다. 배경을 설정하려고하면 프레임이 장식되어 있기 때문에 오류가 발생합니다. .setUndecorated (true)는 .setBackground() 이후이므로 잘못된 순서로 이벤트가 발생합니다. – Rogue

+0

감사합니다. 미래에 대한 지식 :) – user2388169

관련 문제