代码之家  ›  专栏  ›  技术社区  ›  Cheok Yan Cheng

计算jsplitpane中分隔符的“漂亮”查找位置

  •  2
  • Cheok Yan Cheng  · 技术社区  · 15 年前

    我正在尝试使用jsplitpane上的 setdividerlocation 以“最佳大小”的方式调整两个面板的大小,以便垂直滚动条不会出现在顶部面板中。拆分位置应刚好在顶部面板中的最后一个数据之后。

    使用 jsplitpane1.setresizeweight(1d) 为顶部组件保留太多空间,导致数据下有空空间。

    我正试着把它弄好!

    t以“最佳尺寸”的方式调整两个面板的尺寸,使垂直滚动条不会出现在顶部面板中。拆分位置应在顶部面板中的最后一个数据之后。

    使用 jSplitPane1.setResizeWeight(1D) 为顶部组件保留太多的空间,导致数据下方出现空白。

    我在试着去拿它 刚刚好!

    3 回复  |  直到 15 年前
        1
  •  2
  •   Uhlen    15 年前

    JTable

    int location = (int) table.getPreferredSize().getHeight();
    location += splitPane.getDividerSize() * 2;
    splitPane.setDividerLocation(location);
    
        2
  •  1
  •   Paul Lammertsma    15 年前

    JSplitPane

    JTable

    JTable table = new JTable(myTableModel);
    final JScrollPane scrollPane = new JScrollPane(table);
    scrollPane
            .setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    scrollPane
            .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    

    table.addComponentListener(new ComponentListener() {
        @Override
        public void componentShown(ComponentEvent e) {}
        @Override
        public void componentResized(ComponentEvent e) {
            System.out
                .println(scrollPane.getHorizontalScrollBar().getHeight());
        }
        @Override
        public void componentMoved(ComponentEvent e) {}
        @Override
        public void componentHidden(ComponentEvent e) {}
    });
    

    table

        3
  •  -1
  •   Merky    15 年前

    jSplitPane1.setDividerLocation(0);
    jSplitPane1.setDividerSize(0);