1

我的 java 应用程序中有 2 个 jbuttons。我也有 2 个 jpanels。这两个 jpanels 有不同的内容,即彼此不相关。现在我希望每当用户单击按钮时,应该显示相应的 jpanel 但在同一位置(jpanel 具有不同的宽度和高度)。

当我尝试在 netbeans 中执行此操作时,一个 jpanel 包含在另一个 jpanel 中

private void button1ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:

 button1panel.setVisible(true);
//all other panel's visibility is false
}

像button2那样我有这样的actionlistener

private void button2ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
//all other panel's visibility is false
 button2panel.setVisible(true);
}

我已将这 2 个面板放在另一个之上(button2panel 在 button1panel 上),以便我可以在同一位置访问它

但是当我调用 button2panel.setVisible(true) 时,由于 button2panel 的宽度和高度很小,它实际上没有启用。

我的演示表明,由于 button2panel 在 button1panel 内,并且 button1panel 的可见性是错误的,这就是它发生的原因。

我能做的就是将 button2panel 放在 button1panel 之外,但如果我这样做,那么面板位置会有所不同

如何解决?

或任何更好的解决方案?

4

2 回答 2

4

请参阅 Swing 教程中有关如何使用卡片布局的部分,它可以满足您的需求。CardLayout 将使面板大小相同,这比在交换面板时更改框架大小要好。

于 2013-06-01T18:24:17.203 回答
1

我建议您查看A Visual Guide to Layout Managers以帮助您选择最佳的 LayoutManager 以用于您的特定情况。LayoutManagers 是 Swing 框架提供的强大工具。他们根据您提供的最少数量的参数为您计算 GUI 组件的位置和大小。

于 2013-06-01T18:26:11.920 回答