2014-02-12 2 views
2

Может кто-нибудь объяснить мне что-то? Как создать желтую подсказку/уведомление с помощью Java swt?Как создать желтый подсказку с 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(); 



} 
+0

компонентов AWT являются тяжеловес в природе. Вы можете использовать компонент Swing для создания таких ярлыков. – Sanjeev

+0

благодарю вас за ваш ответ. ой, извини. Я допустил ошибку. Я имею в виду swt. в моем проекте я могу использовать swt и не swing :( – JonnyBeton

ответ

3

Использование только SWT использовать код в SWT Snippet 125.

Если вы можете использовать JFace, то ColumnViewerToolTipSupport будет проще.

+0

Эй, спасибо большое. теперь у меня есть проблема, что он работает только в первом столбце, а не в другом. есть ли команда для выбора столбцов, которые я хочу функция? – JonnyBeton

+0

Вы имеете в виду, что всегда отображается первый текст столбца или что-то еще? –

+0

У меня есть таблица с 4 столбцами. Когда я перемещаюсь по ячейке в столбце 2-4, всплывающая подсказка появляется только в первом столбце. всплывающие подсказки отображаются для столбца inviduell со специфицированным титром – JonnyBeton

0

Вы должны начать использовать jface TableViewer. Чтобы создать столбец таблицы, вы будете использовать TableViewerColumn.

Для каждой колонки добавьте CellLabelProvider, который имеет методы getToolTipXXX().

TableViewerColumn.setLabelProvider(CellLabelProvider) 

здесь хорошая статья, чтобы начать с

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

Смежные вопросы