ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-将删除图标列添加到Eclipse表

2019-12-01 21:02:19  阅读:270  来源: 互联网

标签:eclipse eclipse-plugin swt sdk java


我目前在Eclipse插件中实现了TableTableEditor,以通过键盘支持来支持单元格级别的编辑(以使用编辑器来遍历单元格).

我还需要一种删除行的方法,并且我不想在表旁边添加删除按钮,因为它需要单击两次才能删除行(选择行需要1次,删除行需要1次) ).相反,我想要一个单独的列,其中填充有删除图标.我想到了两种方法来实现此目的,并且都遇到了以下问题:

>在表中添加另一列,将图标设置为TableItem.setImage().这种方法存在多个问题,您可以在下面看到它们:

>选择行时,图标也会被选中
>将鼠标悬停在图标上时,它会显示图像的工具提示,显然无法将其禁用
>似乎无法在单元格内垂直居中放置图像

>在表格旁边添加ScrolledComposite,并在其中添加删除图标.这听起来有点疯狂,但实际上我已经做到了这一点.想法是用删除图标填充ScrolledComposite,强制其使用表的滚动条滚动,并在单击图标时删除相应的行.我只遇到这种方法的一个阻塞问题:

>似乎无法隐藏滚动条

所以我的问题是:

>如何解决上述两种方法中提到的问题?
>还有其他更好的方法吗?

解决方法:

我找到了第二种方法隐藏滚动条的方法.基本上,您需要做的是:

// ScrolledComposite sc;
sc.setAlwaysShowScrollBars(true);
sc.getVerticalBar().setVisible(false);

然后将ScrolledComposite的宽度设置为1,以消除不可见ScrollBar占用的额外空间.

并使滚动条保持同步:

// 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);
}

结果:

标签:eclipse,eclipse-plugin,swt,sdk,java
来源: https://codeday.me/bug/20191201/2083390.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有