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();
}
죄송합니다 : 은 여기 내 소스에서 전체 조각입니다.
와우. 언더 코팅을 설정하기 전에 배경을 설정하면 프로그램이 중단되는 이유는 무엇입니까? 나를 설명 할 수 있니? – user2388169
책처럼 생각하십시오. Java는 제시된 순서대로 코드를 실행합니다. 새 프레임을 처음 만들 때 (JFrame Map = new JFrame();), 꾸며졌지만 완전히 새로운 프레임을 만듭니다. 배경을 설정하려고하면 프레임이 장식되어 있기 때문에 오류가 발생합니다. .setUndecorated (true)는 .setBackground() 이후이므로 잘못된 순서로 이벤트가 발생합니다. – Rogue
감사합니다. 미래에 대한 지식 :) – user2388169