如何在不调用OnMouseExit处理程序的情况下在靠近光标的位置生成工具提示。有什么方法可以使工具提示对鼠标焦点不透明?
几年前创建了一个JIRA问题,描述了类似的情况:https://bugs.openjdk.java.net/browse/JDK-8118199。
使用画布,我附加了鼠标侦听器,以连续显示工具提示并相应地更新其下方绘制的数据。
Tooltip tt = new Tooltip();
tt.setAnchorLocation(AnchorLocation.CONTENT_BOTTOM_RIGHT);
tt.setAutoFix(false);
double offset = 100;
this.setOnMouseMoved((event) -> {
//Position tooltip
if (!tt.isShowing()) {
tt.show(this, event.getScreenX() - offset, event.getScreenY() - offset);
} else {
tt.setX(event.getScreenX() - offset);
tt.setY(event.getScreenY() - offset);
}
//Update text
int xBucket = (int) ((event.getX() - marginLeft - gridXOffset) / (gridWidth / xSections));
int yBucket = (int) ((event.getY() - marginTop) / (gridHeight / ySections));
DoubleSummaryStatistics stat = dat[xBucket][yBucket];
tt.setText("Occurances: " + stat.getCount() + "\n"
+ "Average Fitness: " + df.format(stat.getAverage()) + "\n"
+ "Max Fitness: " + df.format(stat.getMax()) + "\n"
+ "Min Fitness: " + df.format(stat.getMin()));
});
this.setOnMouseExited((event) -> {
if (tt.isShowing()) {
tt.hide();
}
});
如您所见,由于定义了偏移,工具提示会显示在左上方一点。如果将值设置为两个较小的值(20-0),则工具提示将在显示时立即抓住焦点,并且将立即调用setOnMouseExit处理程序,从而导致闪烁循环。