1 回答

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