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;
}
}
В приведенном выше коде innerPanel не отображается, и ни какая-либо ошибка occurs.Any идея, как не показать вверх innerPanel, который находится внутри outerPanel.I попытался с помощью getContentPane () .add (innerPanel) но это не сработало.JPanel не появляется в другой JPanel
Я думаю, проблема заключается в том, что у innerPanel будет getPreferredSize() == 0,0 ... потому что в нем ничего нет, поэтому FlowLayout (диспетчер компоновки по умолчанию JPanel) не выполняется, если он добавляется непосредственно в contentPane, вероятно, будет отображаться внешняя панель, потому что вызов add (component) на контентной панели по умолчанию добавит ее с BorderLayout.CENTER – ControlAltDel
. Как вы даже знаете, что отображается, а что нет. Вы не добавили визуальных элементов, которые занимают пространство. Ваш ярлык пуст и никаких границ не задано, поэтому все элементы будут иметь нулевой размер. – markbernard
@markbernard Здесь я добавил только что добавленный минимальный требуемый код. Я думал, что даст решение. У меня есть визуальные элементы, созданные в outerPanel, а также innerPanel, в которых внешняя панель выполняет визуализацию должным образом. – srk20