繁体   English   中英

如何自动调整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表。 当我单击一个按钮以更新数据时,Top_Label有时在html表中包含较少的数据行,并显示了大量空白。

现在,当Top_Label显示一个小的html表时,它将保持其原始大小,并留出许多空白空间,但是在我将其调整为更小的空间并单击按钮以更新数据以拥有一个大的html表后,不会扩大区域以适合较大的html表,但是当我手动移动拆分栏时,它足够智能,不会小于html表的高度,但是如果有空白空间,它将使我缩小该区域。

如何让Results_Split_Pane根据Top_Label的高度自动调整自身,以便在内容较少时,拆分栏将升至Top_Label中html表的高度,而当Top_Label包含更多数据时,Results_Split_Pane的拆分栏将转到较低?

JSplitPane没有自动调整功能。

我建议您可以:

  1. PropertyChangeListener添加到您的JLabel
  2. 并听text事件
  3. 获得标签的首选尺寸
  4. 使用JSplitPanesetDividerLocation(...)方法作为标签的首选高度。

多亏了“ 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);
              }
            }
          };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM