我创建了一个javafx饼图,并希望在用户点击饼图片时执行某些操作。我正在学习本教程:Tuto
这是我的代码
GraphOne.setData(pieChartData);
for (final PieChart.Data data : GraphOne.getData()) {
data.getNode().addEventHandler(MouseEvent.MOUSE_ENTERED,
new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
caption.setTranslateX(e.getSceneX());
caption.setTranslateY(e.getSceneY());
caption.setText(String.valueOf(data.getPieValue()) + "%");
}
});
}
Tutoriel的代码:
final Label caption = new Label("");
caption.setTextFill(Color.DARKORANGE);
caption.setStyle("-fx-font: 24 arial;");
for (final PieChart.Data data : chart.getData()) {
data.getNode().addEventHandler(MouseEvent.MOUSE_PRESSED,
new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent e) {
caption.setTranslateX(e.getSceneX());
caption.setTranslateY(e.getSceneY());
caption.setText(String.valueOf(data.getPieValue()) + "%");
}
});
}
我的问题是如何将标签的位置与mouseEvent绑定?
答案 0 :(得分:1)
我认为本教程已删除了一些代码,因为我们无法将JavaFX controls
显示为Label
,而无需将其添加到javafx.scene.Parent
并且代码没有添加它如何显示!!
以下是我们将Label
添加到Tooltip
的相同代码,并显示包含Tooltip
的{{1}}本身
Label
首选使用Java 8 Lambda表达式和流 所以代码将是
final Label caption = new Label("");
caption.setTextFill(Color.DARKORANGE);
caption.setStyle("-fx-font: 24 arial;");
Tooltip container = new Tooltip();
container.setGraphic(caption);
for (final PieChart.Data data : chart.getData())
{
data.getNode().addEventHandler(MouseEvent.MOUSE_ENTERED,
new EventHandler<MouseEvent>()
{
@Override
public void handle(MouseEvent e)
{
if (container.isShowing())
{
container.hide();
}
caption.setText(String.valueOf(data.getPieValue()) + "%");
container.show(stage, e.getScreenX(), e.getScreenY());
}
});
}
希望这很有用