3
我正在JavaFX 2.2中動態創建StocckedBarChart(請參閱下面的代碼片段) 我想讓每個條形圖充當超鏈接,以便當它懸停在上面時它會發光,點擊它時會打開一個詳細信息屏幕,提供有關用於繪製圖表中相關條形圖的源數據的更多信息。JavaFX 2.2 - 將鼠標事件添加到BarChart或StockedBarChart中的條形圖
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>);
}
});
}
謝謝!此代碼完美工作 – ranef