我正在編寫一個程序,根據每日輸入來跟蹤用戶的心情,將每個條目保存爲一個文本文件(包括輸入日期和時間以及1-5的心情等級)並生成一個JavaFX線條圖,其中輸入日期爲x軸,情緒爲y軸,以顯示用戶的情緒如何隨時間波動。將節點懸停在LineChart JavaFX中的TextArea?
我剛剛成功添加了將鼠標懸停在LineChart上的任何節點上以在TextArea中顯示相關條目的功能。我似乎無法修復的唯一問題是:如何將TextArea居中在折線圖的中間?
因爲發生的事情是textarea的是出現在相同的位置,用戶正在徘徊的線型圖節點,並造成與附近的邊緣節點主要可讀性的問題(如圖所示這裏:TextArea overlaps with linechart borders)
下面是在懸停時創建TextArea的代碼。如果您需要更多信息/代碼片段,請告訴我,我會很樂意提供。任何幫助將不勝感激!
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
}
}
您是否嘗試過把'大號在StackPane中添加一個'TextField',然後添加一個'VBox' /'HBox'中的'TextField'來爲你定位?我使用這種技術在我的JavaFx應用程序中創建彈出窗口。所有的居中都由JavaFx處理,而不是在這種情況下。 (如果你需要一個例子,我可以嘗試鞭打一個) – Chris
嗯,有趣!線圖目前位於網格窗格中,但我沒有將文本字段包裹在任何佈局中。我現在就試試吧! –
包裝文本字段的工作? – Chris