这是我主类中的一小段代码:

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在另一个屏幕上显示,这样我就不必运行程序来完成相同的任务。每个JComponent稍后都将使用自定义方法进行单独更新...同样,在我尝试将它们组合在一起之前,所有这一切都有效。本质上,我的问题是我是否要设置将JComponents添加到JPanel,然后正确地添加到JFrame?我只想显示我的组件...

最佳答案

如果没有进一步的证据,您的两个自定义组件可能不会覆盖getPreferredSize方法(或无法使用适当的布局管理器生成该值),这意味着FlowLayout是默认的布局管理器对于JPanel,它们会自动调整为0x0

另一个测试是在框架上调用pack,它将尝试将框架打包到其内容的首选大小

关于java - JComponent不显示在JFrame中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24768837/

10-10 06:12