我创建了一个javafx饼图,当用户单击饼图的一部分时,我想做些什么。我在关注这个tutorial: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()) + "%");
}
});
}
教程代码:
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绑定标签的位置?
1条答案
按热度按时间wf82jlnq1#
我认为教程删除了一些代码,因为我们无法显示
JavaFX controls
例如Label
不把它加到javafx.scene.Parent
而代码没有添加它,所以它可以显示!!下面是我们添加
Label
到Tooltip
并展示Tooltip
包含Label
```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()
{
@Override
public void handle(MouseEvent e)
{
if (container.isShowing())
{
container.hide();
}
caption.setText(String.valueOf(data.getPieValue()) + "%");
container.show(stage, e.getScreenX(), e.getScreenY());
}
});
}
final Label caption = new Label("");
caption.setTextFill(Color.DARKORANGE);
caption.setStyle("-fx-font: 24 arial;");
Tooltip container = new Tooltip();
container.setGraphic(caption);