我正在 JavaFX 2.2 中动态创建一个 StockkedBarChart(请参见下面的代码片段)用于在图表中绘制相关条形的数据。
final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
List<String> itemTypes = new ArrayList<String>();
vipTypes.add("Type A");
vipTypes.add("Type B");
vipTypes.add("Type C");
xAxis.setCategories(FXCollections.<String>observableArrayList(itemTypes));
m_barChart = new StackedBarChart<String,Number>(xAxis,yAxis);
m_barChart.setTitle("Item Status");
XYChart.Series upSer = new XYChart.Series();
upSer.setName("UP");
XYChart.Series downSer = new XYChart.Series();
downSer.setName("Down");
XYChart.Series unknownSer = new XYChart.Series();
unknownSer.setName("Unknown");
for(Item item: ItemsList)
{
upSer.getData().add(new XYChart.Data<String, Number>(item.getName(), item.getCountOfUpItems());
downSer.getData().add(new XYChart.Data<String, Number>(item.getName(), item.getCountOfDownItems());
unknownSer.getData().add(new XYChart.Data<String, Number>(item.getName(), item.getCountOfUnknownItems());
}
m_barChart.getData().addAll(upSer, downSer, unknownSer);
我想做类似的事情:
//get a specific bar.
Node n = m_barChart.lookup("what should I look for??");
if (n != null && n instanceof Path)
{
final Path path = (Path) n;
final Glow glow = new Glow(.8);
path.setEffect(null);
path.setOnMouseEntered(new EventHandler<MouseEvent>()
{
@Override public void handle(MouseEvent e)
{
path.setEffect(glow);
}
});
path.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent e) {
path.setEffect(null);
}
});
path.setOnMouseCLicked(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent e) {
openDetailsScreen(<selected Bar>);
}
});
}