如何自动调整JSplitPane?
How to auto adjust JSplitPane?
在我的 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 table。当我点击一个按钮更新数据时,Top_Label有时在htmltable中包含较少的数据行并且显示很多空space。
现在Top_Label显示小htmltable时,会保持原来的大小,并留出很多空space,但之后我把它调小了space然后点击按钮更新数据有一个大的htmltable,它不会放大区域以适应更大的htmltable,但是当我手动移动拆分条时,它足够智能,不会小于 html table 的高度,但是如果 space 是空的,它会让我缩小面积。
如何让Results_Split_Pane根据Top_Label的高度自动调整自己,这样当内容少的时候,split bar会上移到[=29=的高度] table 在 Top_Label 中,当 Top_Label 包含更多数据时,Results_Split_Pane 的拆分条会变低 ?
A JSplitPane
没有自动调整功能。
我建议你可以:
- 将
PropertyChangeListener
添加到您的 JLabel
- 并监听
text
事件
- 获取标签的首选尺寸
- 使用
JSplitPane
的setDividerLocation(...)
方法作为标签的首选高度。
感谢 "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);
}
}
};
在我的 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 table。当我点击一个按钮更新数据时,Top_Label有时在htmltable中包含较少的数据行并且显示很多空space。
现在Top_Label显示小htmltable时,会保持原来的大小,并留出很多空space,但之后我把它调小了space然后点击按钮更新数据有一个大的htmltable,它不会放大区域以适应更大的htmltable,但是当我手动移动拆分条时,它足够智能,不会小于 html table 的高度,但是如果 space 是空的,它会让我缩小面积。
如何让Results_Split_Pane根据Top_Label的高度自动调整自己,这样当内容少的时候,split bar会上移到[=29=的高度] table 在 Top_Label 中,当 Top_Label 包含更多数据时,Results_Split_Pane 的拆分条会变低 ?
A JSplitPane
没有自动调整功能。
我建议你可以:
- 将
PropertyChangeListener
添加到您的JLabel
- 并监听
text
事件 - 获取标签的首选尺寸
- 使用
JSplitPane
的setDividerLocation(...)
方法作为标签的首选高度。
感谢 "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);
}
}
};