Java 程序可以编译,但赢得了';跑不动

Java 程序可以编译,但赢得了';跑不动,java,jframe,Java,Jframe,让我们保持简单。我的代码会编译,当我运行它时(使用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)

让我们保持简单。我的代码会编译,当我运行它时(使用
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)
代码在第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();
  }

抱歉,如果它看起来不清楚或者我说的不太清楚,我只想知道为什么我不能启动我的程序。

在调用.setBackground()之前,请尝试将
映射设置为未装饰。

哇,效果很好。你介意告诉我为什么在设置底层之前设置背景会导致程序崩溃吗?你能给我解释一下吗?把它想象成一本书。Java将按照代码呈现的顺序执行代码。当您第一次创建新框架(JFrame Map=new JFrame();)时,您将创建一个完全装饰的新框架。当您尝试在其上设置背景时,会出现错误,因为框架已装饰。由于.setUnderatted(true)位于.setBackground()之后,因此事件的发生顺序错误。谢谢。未来的知识:)
  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();
  }