有人可以解释一下吗?如何使用Java swt创建黄色提示/通知?
当我移动到桌子中的单元格时,我希望弹出窗口很小。像这样:
这是我的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 :(得分: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