2016-09-21 72 views
0

没有设置提示这样的设置提示

if (tooltipText != null) { 
    Label lb = new Label(column.getText()); 
    lb.setTooltip(new Tooltip(tooltipText)); 
    column.setText(null); 
    column.setGraphic(lb); 
} 

不幸的是那么将存在丑陋的副作用的方法。

Empty names in table's menu

我们设置空列的文本,但的菜单项调用column.getText()。如果我们不这样做,头文件中会出现双重名称。如何解决?通过CSS的手段假设..

这个答案不会删除副作用 How to add a tooltip to a TableView header cell in JavaFX 8

回答

1

注:下面的代码依赖于TableView皮肤的内部。这些可能会有变化,因为他们在com.sun包装中诵读。

通过在TableView上进行第一次布局后,可以使用CSS查找来访问TableColumnHeader节点。这些可用于检索用于显示TableColumntext属性的Label

@Override 
public void start(Stage primaryStage) { 
    TableView tv = createTableView(); 

    Scene scene = new Scene(tv); 

    // generate layout pass 
    tv.applyCss(); 
    tv.layout(); 

    // assign tooltips to headers 
    tv.lookupAll(".column-header").stream().forEach(n -> { 
     TableColumnHeader header = (TableColumnHeader) n; 
     Tooltip tooltip = new Tooltip("Tooltip: " + header.getTableColumn().getText()); 
     ((Control) header.lookup(".label")).setTooltip(tooltip); 
    }); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 
+0

非常感谢! – DmitriyAntonov