【发布时间】:2016-08-29 11:55:41
【问题描述】:
为了让最终用户将搜索限制在主 TableView 的某些列,我需要一个带有复选框的树形视图。 我决定将此 TreeView 嵌入到弹出窗口中,单击自定义按钮时显示。
受问题启发,我创建了以下课程: 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。
无论焦点如何,我如何才能获得清晰的复选框?
【问题讨论】:
标签: java checkbox javafx treeview antialiasing