如何使用Java swt创建黄色提示?

时间:2014-02-12 09:11:02

标签: java swt jface hint

有人可以解释一下吗?如何使用Java swt创建黄色提示/通知?

当我移动到桌子中的单元格时,我希望弹出窗口很小。像这样:

enter image description here

这是我的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();



}   

2 个答案:

答案 0 :(得分:3)

仅使用SWT使用SWT Snippet 125中的代码。

如果你可以使用JFace,那么ColumnViewerToolTipSupport会更容易。

答案 1 :(得分:0)

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

对于每列,添加CellLabelProvider方法getToolTipXXX()

TableViewerColumn.setLabelProvider(CellLabelProvider)

这是一篇很好的文章,以

开头

http://www.vogella.com/tutorials/EclipseJFaceTable/article.html