JComponents未显示在JFrame中

时间:2014-07-15 21:53:07

标签: java swing

以下是我主要课程中的一段代码:

JFrame frame = new JFrame();
JPanel panel = new JPanel();

GPComponent gp = new GPComponent(n, k);
GPinfinityComponent gpi = new GPinfinityComponent(n, k);

panel.add(gp);
panel.add(gpi);

frame.add(panel, BorderLayout.CENTER); // just to be clear
frame.setVisible(true);
final int FRAME_WIDTH = 600;
final int FRAME_HEIGHT = 600;
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setTitle("GP("+n+", "+k+")");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

GPComponent和GPinfinityComponent的细节是不必要的......它们扩展了JComponent,当我将它们单独放入框架中时(不使用面板),它们可以正常工作。但是,我想使用JPanel显示一个,所以我不必运行程序来完成相同的任务。稍后将使用自定义方法单独更新每个JComponents ...再次这一切都有效,直到我尝试将它们组合起来。基本上,我的问题是我是否设置了将JComponents添加到JPanel然后正确添加到JFrame?我只想要我的组件显示......

1 个答案:

答案 0 :(得分:2)

如果没有进一步的证据,您的两个自定义组件可能不会覆盖getPreferredSize方法(或者无法使用生成此值的相应布局管理器),这将意味着{ {1}},FlowLayout的默认布局管理器,它们的大小自动为JPanel

另一个测试是在框架上调用0x0,这将尝试将框架打包到其内容首选尺寸