亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將本地坐標轉換為JavaFX圖表坐標

如何將本地坐標轉換為JavaFX圖表坐標

繁星點點滴滴 2023-09-20 19:14:51
對于業務應用程序,要求用戶能夠選擇 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());

因此,只要您引用折線圖中想要確定鼠標單擊相對坐標的相關節點,就可以做到這一點。


查看完整回答
反對 回復 2023-09-20
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號