Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调整表格列的大小以填充所有可用空间_Java_Eclipse_Swt - Fatal编程技术网

Java 调整表格列的大小以填充所有可用空间

Java 调整表格列的大小以填充所有可用空间,java,eclipse,swt,Java,Eclipse,Swt,我在EclipseSWT中有这个表,有5列。我调整了窗口的大小,同时也调整了整个表的大小,但是没有调整列的大小来填充所有可用的空间 是否有一种布局方法可以用来调整列的大小以填充所有可用空间?我发现了一些代码,当客户端空间被调整时,这些代码可以使列重新调整大小,但这对我来说似乎是一个小问题 通过使用布局本身,肯定有一种体面优雅的方式来实现这一点 这可能会派上用场: layoutTableColumns方法 /** * Resize table columns so the concep

我在EclipseSWT中有这个表,有5列。我调整了窗口的大小,同时也调整了整个表的大小,但是没有调整列的大小来填充所有可用的空间

是否有一种布局方法可以用来调整列的大小以填充所有可用空间?我发现了一些代码,当客户端空间被调整时,这些代码可以使列重新调整大小,但这对我来说似乎是一个小问题

通过使用布局本身,肯定有一种体面优雅的方式来实现这一点

这可能会派上用场:

layoutTableColumns
方法

  /**
   * Resize table columns so the concept column is packed and the stylesheet column takes the rest of the space
   */
  private void layoutTableColumns()
  {
    // Resize the columns to fit the contents
    conceptColumn.getColumn().pack();
    stylesheetColumn.getColumn().pack();
    // Use the packed widths as the minimum widths
    int stylesheetWidth = stylesheetColumn.getColumn().getWidth();
    int conceptWidth = conceptColumn.getColumn().getWidth();
    // Set stylesheet column to fill 100% and concept column to fit 0%, but with their packed widths as minimums
    tableLayout.setColumnData(stylesheetColumn.getColumn(), new ColumnWeightData(100, stylesheetWidth));
    tableLayout.setColumnData(conceptColumn.getColumn(), new ColumnWeightData(0, conceptWidth));
  }

这就是我所做的,我已经尝试过了,而且效果很好

viewer.getControl().addControlListener(new ControlListener() {

        @Override
        public void controlResized(ControlEvent arg0) {
            Rectangle rect = viewer.getTable().getClientArea();
            if(rect.width>0){
                int extraSpace=rect.width/4;
                col1.getColumn().setWidth(extraSpace);
                col2.getColumn().setWidth(extraSpace);
                col3.getColumn().setWidth(extraSpace);
                col4.getColumn().setWidth(extraSpace);
            }
        }

        @Override
        public void controlMoved(ControlEvent arg0) {
            // TODO Auto-generated method stub

        }
    });

这里还有一个片段:如果从某种总结开始,这个答案会更好。例如:“这可以通过使用
TableLayout
和…诸如此类的方法来解决。”感谢您提供此解决方案。节省了很多时间。
viewer.getControl().addControlListener(new ControlListener() {

        @Override
        public void controlResized(ControlEvent arg0) {
            Rectangle rect = viewer.getTable().getClientArea();
            if(rect.width>0){
                int extraSpace=rect.width/4;
                col1.getColumn().setWidth(extraSpace);
                col2.getColumn().setWidth(extraSpace);
                col3.getColumn().setWidth(extraSpace);
                col4.getColumn().setWidth(extraSpace);
            }
        }

        @Override
        public void controlMoved(ControlEvent arg0) {
            // TODO Auto-generated method stub

        }
    });