如何使用JavaSWT创建黄色提示?

如何使用JavaSWT创建黄色提示?,java,swt,jface,hint,Java,Swt,Jface,Hint,谁能给我解释一下吗?如何使用JavaSWT创建黄色提示/通知 当我移动表格中的单元格时,我希望弹出一个小通知。大概是这样的: 这是我的Java代码: protected void checkAction() throws Exception { //Erstellen einer neuen Shell Shell shell = new Shell(); shell.setSize(280, 300); shell.setText("Testtabelle"

谁能给我解释一下吗?如何使用JavaSWT创建黄色提示/通知

当我移动表格中的单元格时,我希望弹出一个小通知。大概是这样的:

这是我的Java代码:

protected void checkAction() throws Exception {

    //Erstellen einer neuen Shell
    Shell shell = new Shell();
    shell.setSize(280, 300);
    shell.setText("Testtabelle");

    //Erstellen einer neuen Tabelle
    final Table table = new Table(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
    table.setLinesVisible(true);
    table.setHeaderVisible(true);

    //Einlesen der Überschriften und Vergabe der Namen
    String[] titles = {"Element", "Stage", "Type", "Generate-User", "Change-User" }; 
    for (int i = 0; i < titles.length; i++) {
      TableColumn column = new TableColumn(table, SWT.NONE);
      column.setText(titles[i]);
    }

    // Inhalte hinzufügen
    final int count = 4;
    for (int i = 0; i < count; i++) {
      TableItem item = new TableItem(table, SWT.NONE);
      item.setText(0, "Test "+i);
      item.setText(1, ""+(i+1));
      item.setText(2, "Testtype");
      item.setText(3, "562910");
      item.setText(4, "423424");
    }

   // Tabelle und Shell Packen  
   for (int i = 0; i < titles.length; i++) {
      table.getColumn(i).pack();
    }
    table.setSize(table.computeSize(SWT.DEFAULT, 200));
    shell.pack();

    //MouseListener

    table.addListener(SWT.MouseHover, new Listener() {
        public void handleEvent(Event event) {
          Rectangle clientArea = table.getClientArea();
          Point pt = new Point(event.x, event.y);
          int index = table.getTopIndex();
      //    System.out.println("TopIndex: "+index);
          while (index < table.getItemCount()) {
            boolean visible = false;
            TableItem item = table.getItem(index);
            for (int i = 0; i < (table.getItemCount()+1); i++) {
              Rectangle rect = item.getBounds(i);
              if (rect.contains(pt)) {
                String selected = table.getItem(index).getText(i);

                if (selected.equals("562910")){
                    String real = "Jonas";
                    System.out.println(real);

                }
                else{
                    System.out.println("Ausgewählt: "+selected);    
                }

              }
              if (!visible && rect.intersects(clientArea)) {
                visible = true;
              }
            } 
            if (!visible)
              return;
            index++;
          }
        }
      });


    // Shell öffnen
      shell.open();



}   
protectedvoid checkAction()引发异常{
//埃斯泰伦-伊内尔-纽恩壳牌公司
外壳=新外壳();
外壳尺寸(280300);
shell.setText(“Testtabelle”);
//这是我的新工作
最终表格=新表格(外壳,SWT.MULTI | SWT.BORDER | SWT.FULL|U选择);
表.setLinesVisible(真);
表.setheadervible(true);
//埃因莱森·贝尔斯克利夫特和维加贝·贝尔斯克利夫特
String[]titles={“元素”、“阶段”、“类型”、“生成用户”、“更改用户”};
对于(int i=0;i
仅使用SWT使用中的代码


如果您可以使用JFace,那么
ColumnViewerToolTipSupport
就更容易了。

您应该开始使用JFace
TableViewer
。要创建表列,您将使用
TableViewerColumn

对于每个列,添加具有
getToolTipXXX()
方法的
CellLabelProvider

TableViewerColumn.setLabelProvider(CellLabelProvider)
下面是一篇好文章


Awt组件本质上是重量级的。您可以使用Swing组件创建此类标签。谢谢您的回答。哦,对不起。我犯了一个错误。我是说swt。在我的项目中,我只能使用swt,不能使用swing:(嘿,非常感谢。现在我有一个问题,它只在第一列中工作,而在另一列中不工作。是否有一个命令来选择我想要的列此功能?你的意思是它总是显示第一列文本或其他内容?我有一个有4列的表。当我移动到第2-4列中的单元格上时,工具提示只显示在第一列中。)mn.我希望工具提示针对具有特定滴度的inviduell列显示。我认为您必须使用
TableItem.getBounds(columnIndex)
在列中循环查找鼠标所在的列,然后使用列文本和边界作为工具提示。您能告诉我必须在哪里添加循环吗?我已经开始输入: