對于業務應用程序,要求用戶能夠選擇 JavaFX LineChart 的特定部分。目前,我已經使用 onMousePressed、onMouseDragged 和 onMouseReleased 偵聽器結合 JavaFX 矩形和一些坐標魔法來使用選擇框。當我對這些事件執行 .getX() 和 .getY() 時,我得到了在圖表上繪制矩形的適當坐標。這些是我假設的相對于 JavaFX 圖表的坐標?當用戶做出選擇時,該矩形會覆蓋圖表并允許用戶對其選擇執行任何操作或繪制新選擇。這一切都有效,但是當用戶開始從先前的選擇范圍內繪制時,這將采用相對于矩形的坐標。我的問題如下:如何使矩形對鼠標事件“透明”并將這些事件發送到底層組件(折線圖)?;蛘哂袥]有辦法將這些坐標轉換為折線圖坐標。請注意,我已經在所有不同部分嘗試了 localToParent、localToScene、sceneToLocal 和 sceneToLocal。此外,即使我不完全了解該屬性的確切工作原理,我也嘗試以不同的方式更改 pickOnBounds 。謝謝,
1 回答

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
目前,我已經使用 onMousePressed、onMouseDragged 和 onMouseReleased 偵聽器結合 JavaFX 矩形和一些坐標魔法來使用選擇框。當我對這些事件執行 .getX() 和 .getY() 時,我得到了在圖表上繪制矩形的適當坐標。這些是我假設的相對于 JavaFX 圖表的坐標?
不,它與圖表無關,它是您單擊的目標節點的本地坐標。
事件相對于 MouseEvent 源的原點的水平位置。
圖表是一個由許多節點和窗格組成的復雜事物,每個節點和窗格都可以有自己的本地坐標系。因此 getX 將返回的內容取決于您單擊的實際內容。例如,如果您在圖表頂部覆蓋一個半透明填充的矩形,然后在矩形內部單擊,則坐標將是矩形內的局部坐標。
如何使矩形對鼠標事件“透明”并將這些事件發送到底層組件(折線圖)。
使矩形鼠標透明:
rectangle.setMouseTransparent(true);
或者有沒有辦法將這些坐標轉換為折線圖坐標。
您可以使用諸如mouseEvent.getSceneX()
?獲取場景坐標之類的調用,而不是獲取本地坐標。
然后,您可以使用以下命令將坐標轉換為您希望的任何節點的本地坐標node.sceneToLocal(sceneX, sceneY)
:
node.sceneToLocal(mouseEvent.getSceneX(),?mouseEvent.getSceneY());
因此,只要您引用折線圖中想要確定鼠標單擊相對坐標的相關節點,就可以做到這一點。
添加回答
舉報
0/150
提交
取消