Java Eclipse插件开发:垂直滚动表?
我试图在对话框中创建一个垂直滚动表,但没有成功。当我创建表格时,无论屏幕大小/分辨率如何,表格都会自动扩展到需要的任何高度。大量数据创建了一个表格,该表格延伸到屏幕底部以下 我的代码是这样的(不是逐字的,可能是o型或两型): 所有这些代码都存在于我的dialog类的createDialogArea()中 无论如何,我试过以下方法: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
treeView.setItemCount()
table.getVerticalBar()
返回一个有效的ScrollBar
,该ScrollBar.getVisible()==true代码>?!真正地证明它。我不这么认为<代码>设置可见(true)
不执行任何操作table.setBounds()
?不。甚至在我调用layout()
和/或redraw()
之后createDialogArea()
中完成的。如果我在MyDialog.initializeBounds()中调用setBounds()
,它会缩小表格并添加滚动条,但对话框不会调整大小。调用table.getParent().layout(true)
调整表的大小,而不是对话框的大小。啊李>
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,它的工作非常出色。再次感谢。我误以为尺寸暗示是最小值。谢谢你帮我澄清。