爲了讓最終用戶限制對主TableView的某些列的搜索,我需要一個帶有複選框的樹形視圖。 我決定在彈出窗口中嵌入這個TreeView,點擊一個自定義按鈕。JavaFX CheckBoxTree彈出下拉按鈕
我已經創建了下面的類,從問題的啓發: Java FX8 TreeView in a table cell
public class CustomTreeMenuButton extends MenuButton {
private PopupControl popup = new PopupControl();
private TreeView<? extends Object> tree;
private CustomTreeMenuButton me = this;
public void setTree(TreeView<? extends Object> tree) {
this.tree = tree;
}
public CustomTreeMenuButton() {
super();
this.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (!popup.isShowing()) {
Bounds b = me.localToScreen(me.getBoundsInLocal());
double x = b.getMinX();
double y = b.getMaxY();
popup.setAutoHide(true);
// popup.setAutoFix(true);
popup.setAnchorX(x);
popup.setAnchorY(y);
popup.setSkin(new Skin<Skinnable>() {
@Override
public void dispose() {
}
@Override
public Node getNode() {
return tree;
}
@Override
public Skinnable getSkinnable() {
return null;
}
});
popup.show(me.getScene().getWindow());
}
}
});
}
}
我一起工作的樹包含CheckBoxTreeItem
對象,而彈出的工作,對所有的複選框有些怪異模糊,只要焦點不在複選框上。 (見下文GIF)
首先,我想這是可能的抗鋸齒問題,但popup.getScene().getAntiAliasing().toString()
回報DISABLED
然後,我看到了非整數錨點可能會導致問題。然而popup.setAutoFix(true)
什麼也沒做,也做了以下內容:
popup.setAnchorX(new Double(x).intValue());
popup.setAnchorY(new Double(y).intValue());
這可能是值得指出的是,我與FXML工作。
無論焦點如何,我該如何獲得尖銳的複選框?
輝煌。 我只需要按下按鈕的上下文菜單,就可以擺脫奇怪的懸停發光。 – T4GG
更新了有關懸停發光的答案。 – DVarga
非常感謝! – T4GG