Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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 Eclipse插件开发:垂直滚动表?_Java_Eclipse_User Interface_Eclipse Plugin_Swt - Fatal编程技术网

Java Eclipse插件开发:垂直滚动表?

Java Eclipse插件开发:垂直滚动表?,java,eclipse,user-interface,eclipse-plugin,swt,Java,Eclipse,User Interface,Eclipse Plugin,Swt,我试图在对话框中创建一个垂直滚动表,但没有成功。当我创建表格时,无论屏幕大小/分辨率如何,表格都会自动扩展到需要的任何高度。大量数据创建了一个表格,该表格延伸到屏幕底部以下 我的代码是这样的(不是逐字的,可能是o型或两型): 所有这些代码都存在于我的dialog类的createDialogArea()中 无论如何,我试过以下方法: treeView.setItemCount() table.getVerticalBar()返回一个有效的ScrollBar,该ScrollBar.getVisibl

我试图在对话框中创建一个垂直滚动表,但没有成功。当我创建表格时,无论屏幕大小/分辨率如何,表格都会自动扩展到需要的任何高度。大量数据创建了一个表格,该表格延伸到屏幕底部以下

我的代码是这样的(不是逐字的,可能是o型或两型):

所有这些代码都存在于我的dialog类的createDialogArea()中

无论如何,我试过以下方法:

  • treeView.setItemCount()
  • table.getVerticalBar()
    返回一个有效的
    ScrollBar
    ,该
    ScrollBar.getVisible()==true?!真正地证明它。我不这么认为<代码>设置可见(true)
    不执行任何操作
  • table.setBounds()
    ?不。甚至在我调用
    layout()
    和/或
    redraw()
    之后
  • 上述操作是在
    createDialogArea()
    中完成的。如果我在MyDialog.initializeBounds()中调用
    setBounds()
    ,它会缩小表格并添加滚动条,但对话框不会调整大小。调用
    table.getParent().layout(true)
    调整表的大小,而不是对话框的大小。啊
  • 在initBounds中,我有以下代码:

    Shell shell = getShell();
    shell.setBounds(foo, bar, baz qux);
    myTable.setBounds(foo, bar, baz-fudgeX, qux-fudgeY);
    myTable.getVerticalBar().setVisible(true); // see, it wasn't null!
    // this line doesn't seem to have any effect, I can comment it out and have
    // the same apparent result.
    shell.layout(true);
    // If I call shell.pack() the table snaps back to its original size (huge).
    
  • 如果不调用
    pack()
    ,则对话框底部的OK/cancel按钮将被删除。有了它,整个演习就没有意义了


    为什么我会觉得我错过了一些非常基本的东西,当别人指出时会让我想拍我的额头?

    你的
    外壳使用什么布局?在调用
    layout()
    的过程中,大多数布局都会简单地询问控件的首选大小。表的首选大小是可以显示所有行的大小。如果没有更多约束,则布局会将壳的大小调整为首选大小,而这不是您想要的大小

    为了防止出现这种情况,您需要为表上的布局设置高度提示。这就是一个例子。如果你拆下这条线

    data.heightHint = 200;
    

    生成的Shell太高。

    您的
    Shell使用什么布局?在调用
    layout()
    的过程中,大多数布局都会简单地询问控件的首选大小。表的首选大小是可以显示所有行的大小。如果没有更多约束,则布局会将壳的大小调整为首选大小,而这不是您想要的大小

    为了防止出现这种情况,您需要为表上的布局设置高度提示。这就是一个例子。如果你拆下这条线

    data.heightHint = 200;
    

    生成的Shell太高了。

    一旦我完成了这项工作,我需要使所有单元格都可编辑,并将它们绑定到相关的bean。一旦我有了这个功能,我需要让所有的单元格都可以编辑,并将它们绑定到相关的bean上。哎呀,正好。非常感谢。正如在代码片段中一样,我为表创建了一个gridlayout,并创建了一个带有heightHint的GridData,它的工作非常出色。再次感谢。我误以为尺寸暗示是最小值。谢谢你让我直截了当,说对了。非常感谢。正如在代码片段中一样,我为表创建了一个gridlayout,并创建了一个带有heightHint的GridData,它的工作非常出色。再次感谢。我误以为尺寸暗示是最小值。谢谢你帮我澄清。