Java 向Eclipse表中添加删除图标列
目前,我已经在Eclipse插件中实现了一个,它支持单元格级别的编辑和键盘支持(使用编辑器遍历单元格) 我还需要一种删除行的方法,我不想在表旁边添加删除按钮,因为删除一行需要单击两次(1次选择一行,1次删除)。相反,我想要一个单独的列,其中填充了删除图标。我想到了两种方法来实现这一点,但在这两方面都遇到了问题:Java 向Eclipse表中添加删除图标列,java,eclipse,sdk,swt,eclipse-plugin,Java,Eclipse,Sdk,Swt,Eclipse Plugin,目前,我已经在Eclipse插件中实现了一个,它支持单元格级别的编辑和键盘支持(使用编辑器遍历单元格) 我还需要一种删除行的方法,我不想在表旁边添加删除按钮,因为删除一行需要单击两次(1次选择一行,1次删除)。相反,我想要一个单独的列,其中填充了删除图标。我想到了两种方法来实现这一点,但在这两方面都遇到了问题: 将另一列添加到表中,将图标设置为。此方法存在多个问题,您可以在下面看到这些问题: 选择行时,图标也会被选中 当鼠标悬停在图标上时,它会得到一个显然无法禁用的图像工具提示 似乎无法将图像
表中
,将图标设置为。此方法存在多个问题,您可以在下面看到这些问题:
- 选择行时,图标也会被选中
- 当鼠标悬停在图标上时,它会得到一个显然无法禁用的图像工具提示
- 似乎无法将图像垂直居中放置在单元格内
ScrolledComposite
,强制它使用表格的滚动条滚动,并在单击图标时删除相应的行。我在这种方法中只遇到了一个阻塞问题:
- 似乎无法隐藏滚动条
- 我如何解决这两种方法中提到的问题
- 还有其他更好的方法吗
// ScrolledComposite sc;
sc.setAlwaysShowScrollBars(true);
sc.getVerticalBar().setVisible(false);
然后将ScrolledComposite
的宽度设置为1
,以消除不可见的滚动条所占用的额外空间
要保持滚动条同步,请执行以下操作:
// Table table;
// ScrolledComposite sc;
// int tableRowHeight;
protected void createTable() {
...
// Set the listener that dictates the table row height.
table.addListener(SWT.MeasureItem, new Listener() {
@Override
public void handleEvent(Event event) {
event.height = tableRowHeight;
}
});
// Set the listener for keeping the scrollbars in sync.
table.getVerticalBar().addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
syncDeleteColumnScrollBar();
}
});
}
// This is extracted out into a method so it can also be called
// when removing a table row.
protected void syncDeleteColumnScrollBar() {
sc.setOrigin(0, table.getVerticalBar().getSelection() * tableRowHeight);
}
结果是:
聪明。出于好奇,当表格滚动时,您使用什么代码来滚动ScrolledComposite
?