避免 JPanel 越过另一个
Avoid JPanel from getting over another
我正在尝试将 JPanel 加载到另一个中,但我只能看到一个,其他的都隐藏在它后面。
这是我的代码:
pnlResultados.setLayout(new java.awt.BorderLayout());
for (int i = 0; i < cantResultados; i++) {
pResultado pr = new pResultado(modelo, resultados.get(i), padre, this);
System.out.println("panel");
pnlResultados.add(pr);
pr.setVisible(true);
}
pnlResultados.setVisible(true);
pnlResultados.revalidate();
pnlResultados.repaint();
我已经使用 System.out.printl
来查看我创建和插入了多少面板,这看起来不错。问题是它们都被分配在同一个地方,一个在另一个之上。
我怎样才能避免这种行为?
谢谢
如果在向 BorderLayout 添加组件时未指定约束,则所有组件都将转到 CENTER。但是,只有最后添加的组件可见。
解决方案是使用不同的布局管理器。
由于您是在循环中添加组件,我建议您可能需要查看 GridLayout
。
阅读有关 Layout Managers 的 Swing 教程部分,了解更多信息和工作示例。
您始终可以使用不同的布局管理器嵌套面板以获得所需的布局。
我正在尝试将 JPanel 加载到另一个中,但我只能看到一个,其他的都隐藏在它后面。 这是我的代码:
pnlResultados.setLayout(new java.awt.BorderLayout());
for (int i = 0; i < cantResultados; i++) {
pResultado pr = new pResultado(modelo, resultados.get(i), padre, this);
System.out.println("panel");
pnlResultados.add(pr);
pr.setVisible(true);
}
pnlResultados.setVisible(true);
pnlResultados.revalidate();
pnlResultados.repaint();
我已经使用 System.out.printl
来查看我创建和插入了多少面板,这看起来不错。问题是它们都被分配在同一个地方,一个在另一个之上。
我怎样才能避免这种行为?
谢谢
如果在向 BorderLayout 添加组件时未指定约束,则所有组件都将转到 CENTER。但是,只有最后添加的组件可见。
解决方案是使用不同的布局管理器。
由于您是在循环中添加组件,我建议您可能需要查看 GridLayout
。
阅读有关 Layout Managers 的 Swing 教程部分,了解更多信息和工作示例。
您始终可以使用不同的布局管理器嵌套面板以获得所需的布局。