【发布时间】:2014-02-18 10:35:35
【问题描述】:
我想创建带有标题的饼图。当我将鼠标移到饼图上时,文本显示非常流畅。
public void naiveAddData(String name, double value)
{
pieChartData.add(new Data(name, value));
caption = new Label();
caption.setTextFill(Color.DARKORANGE);
caption.setStyle("-fx-font: 24 arial;");
for (final Data data : chart.getData())
{
data.getNode().addEventHandler(MouseEvent.MOUSE_MOVED,
new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent e)
{
caption.setTranslateX(e.getSceneX() + 15);
caption.setTranslateY(e.getSceneY());
caption.setText(String.valueOf(data.getPieValue()) + "%");
}
});
}
}
但是当我将鼠标移到饼图之外时,标题仍然存在。它没有被删除。我该如何解决这个问题?
P.S 我设法通过这种方式解决了这个问题:
data.getNode().addEventHandler(MouseEvent.MOUSE_MOVED,
new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent e)
{
caption.setTranslateX(e.getSceneX() + 15);
caption.setTranslateY(e.getSceneY());
caption.setText(String.valueOf(data.getPieValue()) + "%");
caption.setVisible(true);
}
});
data.getNode().addEventHandler(MouseEvent.MOUSE_EXITED,
new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent e)
{
caption.setVisible(false);
}
});
}
有没有更好的解决方案?
【问题讨论】:
-
只需向 data.getNode() 添加一个新的 EventHandler 即可删除标题。例如 MouseEvent.MOUSE_EXITED。
-
我用简单的解决方案编辑了帖子。有没有更好的解决方案?
-
我使用了 caption.setVisible(false);有没有更好的去除方法?