【发布时间】:2015-09-23 14:29:54
【问题描述】:
我的可视化中有一个 JavaFX BubbleChart,我需要能够在图表的每个气泡中创建/显示文本。在我的可视化中,我有许多 XYChart.Series,每个系列只有 1 个气泡。对于每个系列,我都会执行“series.setName("xxxx");" (其中 xxxx = 唯一系列名称)并且我需要能够在气泡内显示该系列名称。
我已经为显示系列名称的气泡图实现了工具提示(鼠标悬停事件),但我还需要在气泡内显示文本而不需要鼠标悬停。
为了有代码可以处理,这里有一个 5 系列的基本示例。我将如何在每个气泡中添加文本?
谢谢。
public class bubbleChartTest extends Application {
@Override
public void start(Stage stage) {
final NumberAxis xAxis = new NumberAxis(0, 10, 1);
final NumberAxis yAxis = new NumberAxis(0, 10, 1);
final BubbleChart<Number, Number> bc = new BubbleChart<Number, Number>(xAxis, yAxis);
xAxis.setLabel("X Axis");
xAxis.setMinorTickCount(2);
yAxis.setLabel("Y Axis");
yAxis.setTickLabelGap(2);
bc.setTitle("Bubble Chart StackOverflow Example");
XYChart.Series<Number, Number> series1 = new XYChart.Series<Number, Number>();
series1.setName("Series 1");
series1.getData().add(new XYChart.Data<Number, Number>(3, 7, 1.5));
XYChart.Series<Number, Number> series2 = new XYChart.Series<Number, Number>();
series2.setName("Series 2");
series2.getData().add(new XYChart.Data<Number, Number>(8, 3, 1));
XYChart.Series<Number, Number> series3 = new XYChart.Series<Number, Number>();
series3.setName("Series 3");
series3.getData().add(new XYChart.Data<Number, Number>(1, 9, 2));
XYChart.Series<Number, Number> series4 = new XYChart.Series<Number, Number>();
series4.setName("Series 4");
series4.getData().add(new XYChart.Data<Number, Number>(4, 1, 0.5));
XYChart.Series<Number, Number> series5 = new XYChart.Series<Number, Number>();
series5.setName("Series 5");
series5.getData().add(new XYChart.Data<Number, Number>(9, 9, 3));
Scene scene = new Scene(bc);
bc.getData().addAll(series1, series2, series3, series4, series5);
stage.setScene(scene);
stage.show();
for(XYChart.Series<Number, Number> series : bc.getData()) {
for(XYChart.Data<Number, Number> data : series.getData()) {
Tooltip.install(data.getNode(), new Tooltip(series.getName()));
}
}
}
public static void main(String[] args) {
launch(args);
}
}
【问题讨论】:
-
一个肮脏的技巧是继承 BubbleChart 并在布局期间为每个数据点添加文本到节点。一个不那么脏的版本是直接在nodes上操作。
标签: java user-interface javafx bubble-chart