我正在JavaFX 2.2中动态创建一个StocckedBarChart(见下面的代码片段)我想让每个条形图充当一个超链接,这样当悬停在它上面时它会发光,当单击它时它会打开一个详细信息屏幕,其中包含有关用于绘制图表中相关条形图的源数据的更多信息。
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>);
}
});
}
您可以通过XYChart.Data#getNode()
访问节点
。以下是适用于您的修改示例:
private final Glow glow = new Glow(.8);
private void setupHover(XYChart.Series<String, Number> series) {
for (final XYChart.Data<String, Number> dt : series.getData()) {
final Node n = dt.getNode();
n.setEffect(null);
n.setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
n.setEffect(glow);
}
});
n.setOnMouseExited(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
n.setEffect(null);
}
});
n.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
System.out.println("openDetailsScreen(<selected Bar>)");
System.out.println(dt.getXValue() + " : " + dt.getYValue());
}
});
}
}
在m_barChart.getData()之后调用此方法。addAll(向上、向下、未知) :
m_barChart.getData().addAll(upSer, downSer, unknownSer);
setupHover(upSer);
setupHover(downSer);
setupHover(unknownSer);
通过dt获得电流棒值。getXValue()和dt.getYValue()。
最近在glassdoor-like网站上遇到了一个面试问题,我找不到一个优化的解决方案来解决这个问题: 这和积水问题完全不同。请通读这些例子。 给定一个输入数组,每个元素表示塔的高度,将浇水量,索引号表示浇水位置。每个塔的宽度为1。浇水后打印图表。 备注: > 浇注位置永远不会处于峰值位置。无需考虑分水的情况。 (如果您给出了这种情况的解决方案,您可以假设如果在峰值位置倒入N水,N/2水向左,N/
我知道如何在
我试图添加定制器类,以删除条形图中的条形图之间的空间,但我得到了一些错误的iReport后添加定制器类属性包barchart定制器。我还在iReport的类路径中添加了barchartcustomizer.jar。 我的代码:- 但是当我点击预览得到这个错误:- 错误 如何解决这个错误任何建议都会对我很有帮助。
我刚刚开始使用Chart.js,我很快就变得非常沮丧。我有我的堆叠条形图工作,但是我不能让点击“事件”工作。 我在图表中找到了对GitHub的评论。js声明使用函数<code>getBarsAtEvent 我在画布元素上设置了一个事件监听器(正确的方式): ...然而在我的< code>handleClick函数中,< code > chart . getbarsatevent 是未定义的! 现在
我使用chart.js在我的网页上有一个BarChart。 我在其中添加了两个数据点 现在我想要更新那些条A和B,而不是删除它们并再次添加它们(我已经想好了如何做到这一点)。我想让它们垂直移动以适应它们的新值,但我无法找到如何访问图表中已经存在的数据。 没有什么比得上 其中第一个值将是存储数据的索引(F.E.)。 我该怎么做呢?
我的问题类似于Chart.js 2.1.6中图例如何显示条形标签? 我想有相同的输出饼图给出,但我不想创建多个数据集。我设法做到了这一点,但现在我找不到如何做到。 这是我的代码示例: 这是一种方法吗?