我發現了一個很有趣的文章約JavFx2和這一個的Java FX事件處理上線
http://docs.oracle.com/javafx/2/events/handlers.htm
我想知道如何爲創建延伸的線條特徵的物體做的,所以插入事件管理。
例如,單擊鼠標左鍵,雙擊鼠標左鍵點擊繪製的線條,或者在鼠標懸停線條(選中線條)時按鍵盤上的canc鍵,或者在線條外點擊鼠標左鍵?
非常感謝。
我發現了一個很有趣的文章約JavFx2和這一個的Java FX事件處理上線
http://docs.oracle.com/javafx/2/events/handlers.htm
我想知道如何爲創建延伸的線條特徵的物體做的,所以插入事件管理。
例如,單擊鼠標左鍵,雙擊鼠標左鍵點擊繪製的線條,或者在鼠標懸停線條(選中線條)時按鍵盤上的canc鍵,或者在線條外點擊鼠標左鍵?
非常感謝。
我剛碰到同樣的問題。
我想要一個'繪圖面板',我可以放置可拖動的輔助線。 你可以通過'setOnMousePressed'和'setOnMouseDragged'附加一個MouseHandler來獲得這樣的行爲。
但是,最大的問題是,線條尺寸太小,你必須很幸運,用鼠標點擊它。
這就是爲什麼我反其道而行之。 我附加一個鼠標處理程序到繪圖面板和每一個鼠標點擊我檢查,如果鼠標cusor是在任何輔助線附近。 這給了我一個添加一點寬容的機會,所以可以點擊並拖動這些線條。
我不能說,如果是最有效的方式,將很高興,如果有人想出了一個更好的主意。
編輯: 同時,我寫了一個小測試,結果發現,我的第一個想法是不是很好。
我的第二個想法是包裹線在一個窗格和居中的y軸座標(對於垂直線),該窗格內。 在該窗格上,我設置了鼠標處理程序。而且,由於我使窗格的首選高度爲5像素,因此現在有足夠的容差讓鼠標光標捕捉該線。
如果有人對這個想法感興趣,我可以發佈一些示例代碼。
問候,-chris-
使用JavaFX時,這是經常發生的問題。目前,我用厚厚的視覺效果覆蓋了所有薄的視覺效果,並在厚厚的視覺效果上註冊了事件聽衆。
例如,具有由多條線段的連接:
// construct invisible fat lines for selection
selectionLines.getChildren().clear();
for (Node child : connection.getChildren()) {
Line line = (Line) child;
Line selLine = new Line(line.getStartX(), line.getStartY(), line.getEndX(), line.getEndY());
selLine.setLayoutX(line.getLayoutX());
selLine.setLayoutY(line.getLayoutY());
selLine.setStrokeWidth(SELECTION_LINE_WIDTH);
selLine.setStroke(INVISIBLE);
selectionLines.getChildren().add(selLine);
}
connection.getChildren().add(selectionLines);