Java JPanel不会出现在另一个JPanel中
在上面的代码中,innerPanel没有显示,也没有发生任何错误。知道如何显示outerPanel中的innerPanel吗?我尝试使用 getContentPane.addinnerPanel 但它不起作用。试着改变一下Java JPanel不会出现在另一个JPanel中,java,swing,jpanel,layout-manager,Java,Swing,Jpanel,Layout Manager,在上面的代码中,innerPanel没有显示,也没有发生任何错误。知道如何显示outerPanel中的innerPanel吗?我尝试使用 getContentPane.addinnerPanel 但它不起作用。试着改变一下 class ABC extends JFrame { public JPanel createGUI() { JPanel outerPanel = new JPanel(); outerPanel.setLayout(null
class ABC extends JFrame {
public JPanel createGUI()
{
JPanel outerPanel = new JPanel();
outerPanel.setLayout(null);
JLabel top = new JLabel();
top.setBounds(40,40,400,30);
top.setText("Hello World");
outerPanel.add(top);
int l = getLength();
JPanel innerPanel = new JPanel();
if(l==0)
{
innerPanel.setLayout(null);
JLabel empty = new JLabel("No Data Found");
empty.setBounds(80,150,300,30);
innerPanel.add(empty);
}
else
{
innerPanel.setLayout(new GridLayout(l,4,5,5));
for(int i=0;i<l;i++)
{
innerPanel.add(new JLabel("Text1");
innerPanel.add(new JLabel("Text2");
JButton b1 = new JButton("Button1");
innerPanel.add(b1);
JButton b2 = new JButton("Button2");
innerPanel.add(b2);
}
}
outerPanel.add(innerPanel);
return outerPanel;
}
}
到
或者完全删除setLayout调用。我认为问题在于innerPanel的getPreferredSize==0,0。。。因为它里面什么都没有,所以如果直接添加到contentPane,它就不会被JPanel的默认布局管理器FlowLayout进行布局,outerPanel可能正在显示,因为在默认contentPane上调用add component将使用BorderLayout.center添加它。您甚至如何知道显示了什么和没有显示什么。您没有添加占用空间的视觉元素。您的标签是空的,没有设置边框,因此所有元素的大小都将为零。@markbernard在这里我添加了我认为可以提供解决方案的所需的最小代码。我在outerPanel和innerPanel中设置了可视元素,在其中outerPanel可以正确渲染。上下文之外的代码片段不是我将为我们提供足够的信息来帮助您,然后对您进行猜测。我刚刚添加了所需的最少代码—当您提出一个演示问题时,请发布一个适当的帖子。1代码没有编译。2你只需要在面板上添加一个组件,这样我们就知道你在做什么。虽然这是个好主意,但据我所知,OP无法知道面板是否实际可见,因为面板上没有添加任何可见的内容,因此即使这确实解决了问题,他们也不知道1+,但是,您可以去掉setLayoutnull语句。Swing设计用于布局管理器,JPanel的默认布局管理器是FlowLayout。
outerPanel.setLayout(null);
outerPanel.setLayout(new FlowLayout());