1

我有一个用于不同元素的 JPanel 集合:JPanel showPane、seasonsPane、episodesPane、airingsPane
所有这些都将 setLayout 设置为 null 并且大小固定为 304x416。我将这些 JPanel 添加到大小为 1280x416 的名为 showViewPanel 的 JPanel 中,并像这样设置 BoxLayout(下面是 JFrame 中的代码):

showViewPanel.setLayout(new BoxLayout(showViewPanel, BoxLayout.X_AXIS));
showViewPanel.setSize(1280, 416);
showViewScroll = new JScrollPane(showViewPanel);
add(showViewScroll);
setSize(304, 416);
setVisible(true);

我无法弄清楚为什么它不会生成所有组件的可滚动视图,而是调整 showViewPanel 的大小以匹配窗口的大小。我究竟做错了什么?

4

2 回答 2

3

所有这些都将 setLayout 设置为 null 并且大小固定为 304x416。

不要使用空布局!!!不要手动设置面板的大小!!!您的面板应该使用布局管理器,以便自动计算首选尺寸。

如果您希望所有面板的大小相同,则可以使用 aGridLayout作为您的主面板(而不是 BoxLayout),然后将您的子面板添加到此面板。

如果您让布局管理器完成他们的工作,滚动条将在需要时自动出现。

于 2013-10-22T18:50:00.837 回答
1

将子面板的覆盖preferredSize为 304x416。滚动窗格依赖于内容的首选大小(取决于其内容的首选大小)。

布局管理器将根据子面板的首选大小设置子面板的大小,因此您的自定义面板将被覆盖。通常,您应该摆脱null布局并学习使用布局管理器。绝对放置总是会带来麻烦,即使没有麻烦也不值得。

于 2013-10-22T18:45:55.180 回答