在我的Java Swing应用程序中有一个垂直分割的JSplitPane,顶部是JLabel,当我点击一个按钮来更新一些信息时可能会改变大小,底部是一个显示一些结果的JPanel。
我的代码如下所示:
JLabel Top_Label=new JLabel();
Top_Label.setPreferredSize(new Dimension(1420,355));
JPanel Bottom_Panel=new JPanel();
Bottom_Panel.setPreferredSize(new Dimension(1420,445));
JSplitPane Results_Split_Pane=new JSplitPane(JSplitPane.VERTICAL_SPLIT,Top_Label,Bottom_Panel);
Top_Label中包含一个html表。当我单击一个按钮来更新数据时,Top_Label有时在html表中包含较少的数据行,并显示大量的空白空间。
现在,当Top_Label显示一个小的html表时,它将保持其原始大小,并留下大量空白空间,但在我将其调整到较小的空间并单击按钮以更新数据以获得大的html表,它不会扩大区域以适应更大的html表,但是当我手动移动分割条时,它足够智能,不会小于html表的高度,但如果有空的空间,它会让我收缩面积。
如何让Results_Split_Pane根据Top_Label的高度自动调整自身,这样当内容较少时,当Top_Label包含更多数据时,分割栏将更高到Top_Label中html表的高度,Results_Split_Pane的分割酒吧会降低吗?
答案 0 :(得分:3)
JSplitPane
没有自动调整功能。
我建议你可以:
PropertyChangeListener
JLabel
text
事件setDividerLocation(...)
的{{1}}方法作为标签的首选高度。答案 1 :(得分:1)
感谢" camickr",我得到了完美的答案,跳过第3步并使用" -1"这样JSplitPane会自动调整到它的大小,效果很好。这是听众:
Results_Top_Label.addPropertyChangeListener(Property_Change_Listener);
...
PropertyChangeListener propertyChangeListener=new PropertyChangeListener()
{
@Override
public void propertyChange(PropertyChangeEvent event)
{
// Out("[x] : "+event.getPropertyName());
if (event.getSource() instanceof JLabel && event.getPropertyName().equals("html"))
{
// Out(((JLabel)event.getSource()).getName()+" : Height = "+Results_Top_Label.getPreferredSize().height);
Results_Split_Pane.setDividerLocation(-1);
}
}
};