Чтобы конечный пользователь мог сдержать поиск по некоторым столбцам основного TableView, мне понадобилось дерево с флажками. Я решил внедрить этот TreeView в всплывающее окно, показывая по щелчку на пользовательской кнопке.JavaFX CheckBoxTree при всплывающем раскрывающемся списке Button
Я создал следующий класс, вдохновленный от вопроса: 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