java 面板 滚动条 几个_java – SWT:如何只使用一个滚动条滚动两个seaparate查看器...

我将两个TreeViewers放在SWT

Shell中.

他们每个人都有自己的滚动条.但是,我想在Shell中只有一个滚动条控制同时滚动两个TreeViewers.

我能够找到的唯一例子是在源比较视图中.但是,我看不出他们是怎么做到的 – 我一直想弄清楚它.但至少我知道这是可能的.

有什么建议?

编辑

我的最终界面应该有两个TreeViewers和一个左侧的Scrollbar来控制它们.

最佳答案 这应该可以帮到你.当我使用SWT.NO_SCROLL为Tree停止滚动但是Table时,它隐藏了垂直滚动条,并且当​​设置了顶部索引时滚动了Table.

使用setTopItem(TreeItem)-read文档(因为treeitem有子项)

使用setTopIndex(int index)

例:

Display display = new Display();

Shell shell = new Shell(display);

shell.setLayout(new GridLayout(2,false));

final Tree tree1 = new Tree(shell, SWT.BORDER | SWT.MULTI /*| SWT.NO_SCROLL*/);

for (int i = 0; i < 128; i++) {

TreeItem item = new TreeItem(tree1, SWT.NONE);

item.setText("Tree 1 Item" + i);

}

GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);

data.heightHint=200;

tree1.setLayoutData(data);

final Tree tree2 = new Tree(shell, SWT.BORDER | SWT.MULTI);

tree2.setSize(200, 200);

for (int i = 0; i < 128; i++) {

TreeItem item = new TreeItem(tree2, SWT.NONE);

item.setText("Tree 2 Item" + i);

}

tree2.getVerticalBar().addSelectionListener(new SelectionListener() {

@Override

public void widgetSelected(SelectionEvent e) {

TreeItem item = tree2.getTopItem();

int i = tree2.indexOf(item);

item = tree1.getItem(i);

tree1.setTopItem(item);

}

@Override

public void widgetDefaultSelected(SelectionEvent e) {

}

});

data = new GridData(SWT.FILL, SWT.FILL, false, false);

data.heightHint=200;

tree2.setLayoutData(data);

shell.pack();

shell.open();

while (!shell.isDisposed()) {

if (!display.readAndDispatch())

display.sleep();

}

display.dispose();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值