【发布时间】:2014-08-17 05:28:28
【问题描述】:
我有一个JPanel (cardLayoutPanel),它的布局是CardLayout。
我还有另外 3 个不同的面板(firstPagePanel、secondPagePanel、thirdPagePanel)
-
firstPagePanel尺寸约为 450x400 左右, -
secondPagePanel大小约为 800x600 -
thirdPagePanel大小约为 1024x768
我 cardLayoutPanel.add 所有 3 个面板,我首先显示 firstPagePanel 作为我的视图。
我想让我的程序首先显示 firstPagePanel 的大小,即 450x400
然后如果显示secondPagePanel,则将大小更改为800x600,如果显示thirdPagePanel,则将大小更改为1024,768
我没有猜测我的 3 面板尺寸应该是多少,而是使用了 frame.getPreferredSize(),但我的第一个视图总是采用 thirdPagePanel 的尺寸,即 1024x768 而不是 450x400;
我可以做些什么来解决这个问题?
public class MainFrame {
private CardLayout cardLayout = new CardLayout();
private JPanel cardLayoutPanel = new JPanel();
private FirstPagePanel firstPagePanel = new FirstPagePanel();
private SecondPagePanel secondPagePanel = new SecondPagePanel();
private ThirdPagePanel thirdPagePanel = new ThirdPagePanel();
private JFrame frame = new JFrame("Panel size test");
public MainFrame() {
cardLayoutPanel.setLayout(cardLayout);
cardLayoutPanel.add(firstPagePanel,"1");
cardLayoutPanel.add(secondPagePanel,"2");
cardLayoutPanel.add(thirdPagePanel,"3");
cardLayout.show(cardLayoutPanel,"1");
frame.add(cardLayoutPanel);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.getPreferredSize();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setResizable(false);
}
}
【问题讨论】:
-
我会质疑为什么。作为用户,这种“跳跃”非常令人心烦意乱,有点烦人,恕我直言
-
因为如果我保持我的 firstPagePanel 大小与我的 thirdPagePanel 大小一样大,它会看起来很奇怪
标签: java swing layout-manager cardlayout