【问题标题】:How to auto adjust JSplitPane?如何自动调整 JSplitPane?
【发布时间】:2015-08-12 18:53:48
【问题描述】:

在我的 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的分割酒吧会走低吗?

【问题讨论】:

    标签: java swing resize jsplitpane


    【解决方案1】:

    JSplitPane 没有自动调整功能。

    我建议你可以:

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

    【讨论】:

      【解决方案2】:

      感谢“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);
                    }
                  }
                };
      

      【讨论】:

        猜你喜欢
        • 2018-02-06
        • 2011-06-17
        • 2011-06-18
        • 1970-01-01
        • 1970-01-01
        • 2013-08-04
        • 2012-01-05
        • 1970-01-01
        • 2016-02-08
        相关资源
        最近更新 更多