【发布时间】:2015-10-02 16:24:20
【问题描述】:
现在我是一个 JFreeChart 折线图。我想添加标记来标记一些事件。我已经添加了标记。问题是标记标签已经开始重叠。我想通过仅在用户将鼠标悬停在标记线上时才显示标记标签来解决此问题。如何捕获鼠标悬停事件?
Marker tempMarker = new ValueMarker(hour.getFirstMillisecond());
tempMarker.setPaint(Color.BLACK);
tempMarker.setLabelAnchor(RectangleAnchor.TOP_LEFT);
tempMarker.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
//instead of this i want a mouseoverlistner and then show the label
tempMarker.setLabel("Event Name");
鼠标悬停代码
chartPanel.addChartMouseListener(new ChartMouseListener() {
@Override
public void chartMouseClicked(ChartMouseEvent event) {
//do something on mouse click
}
@Override
public void chartMouseMoved(ChartMouseEvent event) {
System.out.println("Entity Type: " + event.getEntity());
}
});
当我将鼠标悬停在 Marker 对象上时,ChartEntity 会发送到 chartMouseMoved。这与我将鼠标悬停在图表的其他未填充部分上时相同。
【问题讨论】:
-
您可以使用
ChartMouseListener(例如:stackoverflow.com/questions/21172794/…)捕获鼠标悬停,但也许您会对工具提示感到满意? (例如:stackoverflow.com/questions/6766223/…) -
@Eric
ChartMouseListener不会在 ValueMarker 上捕获鼠标事件。已经试过了。标记已添加到绘图中,并且 chartmouselistener 位于图表对象上 -
ChartMouseListener应该捕获图表中发生的所有事件。您可以发布您尝试过的内容吗?当检测到鼠标悬停在特定实体上时,如何动态添加/删除标记? -
@Eric 我已经用 chartMouseListner 代码更新了我的问题。基本上我已经用它测试过了,它没有提供任何方法来识别鼠标在标记上。
标签: jfreechart