gpt4 book ai didi

JavaFx : Processing Events for a Pie Chart

转载 作者:行者123 更新时间:2023-12-02 12:17:41 26 4
gpt4 key购买 nike

我创建了一个 javafx 饼图,并希望在用户单击饼图的一部分时执行某些操作。我正在关注本教程:Tuto

我使用相同的代码,但问题是我的标签没有显示在数据节点上。 enter image description here

这是我的代码

    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()) + "%");
}
});
}

enter image description here

我的问题是如何将标签的位置与 mouseEvent 绑定(bind)?

最佳答案

我认为教程删除了一些代码,因为如果不将 JavaFX 控件添加到 javafx.​scene.Parent 中,我们就无法显示 LabelJavaFX 控件 并且代码没有添加它,那么如何显示它!!

这里是我们将Label添加到Tooltip并显示包含Label的Tooltip本身的相同代码

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());
}
});
}

优先使用 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);

chart.getData().forEach((data) ->
{
data.getNode().
addEventHandler(MouseEvent.MOUSE_ENTERED, e ->
{
if (container.isShowing())
{
container.hide();
}
caption.setText(String.valueOf(data.getPieValue()) + "%");
container.show(stage, e.getScreenX(), e.getScreenY());
});
});

希望这有用

关于JavaFx : Processing Events for a Pie Chart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46043029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com