java - Eclipse插件开发: Vertically scrolling table?

标签 java eclipse user-interface eclipse-plugin swt

我试图在对话框中创建一个垂直滚动表,但没有成功。当我创建表格时,它会自动扩展到所需的任何高度,无论屏幕尺寸/分辨率如何。大量数据会创建一个远远低于屏幕底部的表格。

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

final Table table = new Table(parent, SWT.SINGLE | 
  SWT.FULL_SELECTION | SWT.SCROLL_LINE | borderStyle | orientation );
table.setHeaderVisible(true);
table.setLinesVisible(true);

TableViewer tableView = new TableViewer(table);

// code yanked to set up the columns (movable == false, 
// resiable == true, with set text, widths, and toolTipText)

tableView.setContentProvider(new ArrayContentProvider());
// BeanLabelProvider's getColumnText returns the beanDescriptor's
// getReadMethod.invoke().toString()
tableView.setLabelProvider(new BeanLableProvider(MyClass.class));
tableView.setInput(anArrayOfMyClass);

所有这些代码都位于我的对话框类的 createDialogArea() 中。

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

  1. treeView.setItemCount() 修剪数据,它不限制显示的数据量。
  2. table.getVerticalBar() 返回一个有效的 ScrollBar,并且 scrollbar.getVisible() == true;?!真的吗?证明给我看。不这么认为。 setVisible(true) 不执行任何操作。
  3. table.setBounds()?没有。即使在我调用 layout() 和/或 redraw() 之后。
  4. 上述操作是在 createDialogArea() 内完成的。如果我在 MyDialog.initializeBounds() 中调用 setBounds() ,它会缩小表格并添加滚动条(惊呼!),但对话框不会调整大小。调用 table.getParent().layout(true) 调整表的大小,而不是对话框的大小。啊!
  5. 在 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(),确定/取消按钮将从对话框底部剪掉。有了它,整个练习就变得毫无意义了。

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

最佳答案

您的 Shell 使用什么布局?大多数布局只是在调用 layout() 期间询问控件其首选大小。表的首选大小是可以显示所有行的大小。如果没有更多约束,布局会将 Shell 的大小调整为首选大小,这不是您想要的。

为了防止这种情况,您需要为表格上的布局设置高度提示。一个例子是 snippet 。如果删除该行

data.heightHint = 200;

生成的 Shell 太高了。

关于java - Eclipse插件开发: Vertically scrolling table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4475334/

相关文章:

java - 从命令行到 GUI

java - 如何查看 map 类型?

java - 改变 JCombobox 的高度

java - 使用 Java 更新 Mysql 表行

eclipse - PMD - Eclipse 插件 - 不针对任何规则进行测试

c - 使用远程 GDB 在 Eclipse 中调试

java - 我将 getHostAddress() 与 try-catch 一起使用,但是当我运行它时,它只是不运行 这有什么问题吗?

java - 通过 webjar 将 Bootstrap 附加到 Spring MVC 项目

javascript - 如何设置回调以在*之前* jquery 动画运行?

iphone - UITableView 数据源方法不会在设备 3G iOS4.0 中调用