我正在为使用 jtabbedpane 的数据库创建搜索功能,其中一个选项卡用于快速搜索,一个选项卡用于高级搜索。高级搜索有更多的字段,因此需要更大,但出于美学原因,我不希望整个窗口始终处于最大尺寸。我在窗格中添加了一个更改侦听器,并尝试根据它所在的选项卡调整窗格的大小,并且在单击选项卡时执行代码,但什么也不做。我尝试使用 tabbedSearchPane.setSize() 后跟 tabbedSearchPane.validate(),以及使用 setSize+validate 调整其周围组件的大小,但似乎没有任何作用。我真的只需要知道如何实际更改 jtabbedpane 的大小。
问问题
3946 次
2 回答
1
正如Tabs 中的 Preferred Size 中所述,并且正如您所观察到的,我们JTabbedPane
非常努力地尝试容纳最大的窗格。要从较大的窗格切换到较小的窗格,您必须将较大的窗格替换为与较小窗格和invalidate()
选项卡窗格具有相同大小的临时窗格;反过来需要走另一条路。这是一场斗争。或者,考虑使用此处CardLayout
提到的。由于您将要调整封闭容器的大小,请注意此相关示例如何相应地使用。pack()
于 2010-04-21T16:11:23.360 回答
0
我像这样解决了这个问题,没有任何问题。(我的选项卡式窗格在另一个面板中继承,如果它发挥任何作用)
tabbedPane.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
switch (tabbedPane.getSelectedIndex()) {
case 0:
tabbedPane.setPreferredSize(new Dimension(1, 230));
break;
case 1:
tabbedPane.setPreferredSize(new Dimension(1, 330));
break;
case 2:
tabbedPane.setPreferredSize(new Dimension(1, 430));
break;
}
}
});
当然,当我创建我的 jtabbedpane 时:
tabbedPane.setPreferredSize(new Dimension(1, 230));
在此之后,我都重新绘制并重新验证了 jtabbed/parentpanel,但由于其他原因......这似乎可以在任何面板中调用 repain/revalidate 都没有。
预览(红色边框 = 其他面板)
于 2018-02-24T13:54:33.717 回答