无法将组件添加到JFrame

时间:2013-12-03 12:21:41

标签: java swing jframe

我读了很多相同的问题,但仍然无法修复它 我的组件只是不想添加到JFrame。

//Game extends Canvas implements Runnable

public static void main(String[] args) {
    Game game = new Game();
    game.setPreferredSize(new Dimension(SIZE, SIZE));
    JFrame frame = new JFrame("");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(new BorderLayout());
    for (Component c : frame.getComponents())
        System.out.println(c.getClass().getName() + ": " + c.isVisible() + " " + c.isDisplayable());
    frame.add(game, BorderLayout.CENTER);
    for (Component c : frame.getComponents())
        System.out.println(c.getClass().getName() + ": " + c.isVisible() + " " + c.isDisplayable());
    frame.pack();
    frame.setResizable(false);
    frame.setVisible(true);
    mainFrame = frame;
    game.start();
} 

输出

javax.swing.JRootPane: true false  
javax.swing.JRootPane: true false

1 个答案:

答案 0 :(得分:3)

您的代码正在检查JFrame的根窗格是否存在 - 确实如此。在渲染之前是否可显示 - 否。

  • 不要将Canvas与JFrame一起使用。改为使用Swing组件。
  • 了解组件是否已添加到JFrame的contentPane中,该内容由其根窗格保存。
  • 阅读Swing教程,了解有关如何使用Swing进行编码的详细信息。您可以在此处使用其他Java教程The Really Big Index找到它们。