【发布时间】:2017-05-07 21:30:38
【问题描述】:
我正在编写一个程序,该程序根据每日输入跟踪用户的情绪,将每个条目作为文本文件保存到文件夹中(包括输入的日期和时间,以及从 1 到 5 的情绪等级)并生成一个JavaFX 折线图,以进入日期为 x 轴,以心情为 y 轴,显示用户的心情如何随时间波动。
我刚刚成功添加了将鼠标悬停在 LineChart 上的任何节点上以在 TextArea 中显示相关条目的功能。我似乎无法解决的唯一问题是:如何将所述 TextArea 置于折线图中间?
因为发生的情况是 textarea 出现在与用户悬停的线图节点相同的位置,并导致靠近边缘的节点出现重大可读性问题(如下所示:TextArea overlaps with linechart borders)
这是在悬停时创建 TextArea 的代码。如果您需要更多信息/代码 sn-ps,请告诉我,我会很乐意提供。任何帮助将不胜感激!
class HoveredThresholdNode extends StackPane {
HoveredThresholdNode(String date, int mood, int index) {
setPrefSize(13, 13);
TextArea entry = createDataThresholdLabel(date, mood, index);
setOnMouseEntered(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
/**
*Right here is where I need to change the location of
*the TextArea on the linechart, but I don't know how
*/
getChildren().setAll(entry);
toFront();
}
});
setOnMouseExited(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent mouseEvent) {
getChildren().clear();
setCursor(Cursor.DEFAULT);
}
});
}
private TextArea createDataThresholdLabel(String date, int mood, int index) {
//Creates&returns TextArea, left out code as it's irrelevant
//Don't worry about index parameter, it's just used for retrieving entry
}
}
【问题讨论】:
-
您是否尝试过将
LineChart放在StackPane中,然后在VBox/HBox中添加TextField来为您进行居中?我使用这种技术在我的 JavaFx 应用程序中创建弹出窗口。在这种情况下,所有居中都由 JavaFx 处理。 (如果你需要一个例子,我可以试着做一个) -
嗯,有趣! Linechart 当前位于网格窗格中,但我没有将文本字段包装在任何布局中。我现在就试试!
-
包装文本字段是否有效?
-
是的,确实如此,感谢您的推荐!我的错,我又忘了在这里评论。
-
我提交了我的评论作为答案,因此您可以将其标记为正确,以供以后可能偶然发现此问题的任何人:)
标签: java javafx hover textarea linechart