你能在CardLayout上加上SpringLayout“esque”约束吗?

时间:2016-01-19 06:13:28

标签: java swing layout-manager cardlayout springlayout

我有一个卡片布局,可以使用JComboBox在面板之间切换。问题是,当我重新调整窗口大小时,我的面板内部永远不会改变大小。什么时候我会使用SpringLayout我可以告诉一些东西保持x像素远离边界,它会重新调整自己的大小。我怎么能在CardLayout中模仿它?

1 个答案:

答案 0 :(得分:3)

  

当我使用SpringLayout时,我可以告诉某些东西与边界保持x像素

您可以将Border添加到用于CardLayout的面板。

JPanel cards = new JPanel(new CardLayout());
cards.setBorder( new EmptyBorder(10, 10, 10, 10) );
cards.add(card1, "card1");
cards.add(card2, "card2");

现在每个子面板的面板周围都有10像素的边框。您还可以将边框添加到各个卡面板。阅读How to Use Borders上Swing教程中的部分,了解更多信息和工作示例。

  

......它会重新调整自身的大小。我怎么能在CardLayout中模仿它?我怎么能在CardLayout中模仿它?

CardLayout只持有其他面板。您仍然需要设置添加到卡面板的每个面板的布局,以便调整组件大小。

Swing教程还有一个关于How to Use CardLayout的部分,其中有一个工作演示,显示了在调整帧大小时组件位置的变化。如果您希望组件调整大小,则需要为添加到CardLayout的每个面板使用不同的布局管理器。