誰かが、イメージビューをペイン(JavaFX)上にドラッグするためのEventHandlerの設定方法の簡単な例を挙げることができます。ドラッグするには、イメージ上でマウスを押し、ドラッグしてイメージをフォローしてからマウスを離すとイメージビューがその位置で停止します。JavaFX:ペイン上でimageviewをドラッグする方法
0
A
答えて
1
は最初Drag and drop in javafx たり、getMouseX
とgetMouseY
ポイントでそれを自分で行うとAnchorPane
でImageViewの座標を変更することができますドキュメントを読んで....
0
私はドラッグ&ドロップで提案された解決策を試してみたかったです。私はそれが最適ではないことがわかります。ドラッグでそれを行うことにより
、あなたが不要ないくつかのメカニズムをトリガードロップ:
- あなたは私も問題ことがあった
- カーソルが変化...
- アプリケーションの外にドラッグすることができます位置デルタのカリキュレーションはスピードに依存しているようです
ネザーレス、興味がある場合はこれが私のコードです:
Main.java
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
Controller controller = new Controller();
loader.setController(controller);
Parent root = (Parent)loader.load();
controller.InitUi();
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Controller.java
package sample;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.input.*;
import javafx.scene.layout.AnchorPane;
import javafx.scene.shape.Rectangle;
public class Controller
{
@FXML
private Rectangle draggable;
private Double lastX = null;
private Double lastY = null;
public void InitUi()
{
if (this.draggable != null)
{
this.draggable.setOnDragOver(new EventHandler<DragEvent>()
{
@Override
public void handle(DragEvent dragEvent)
{
HandleMouseMovement(dragEvent.getSceneX(), dragEvent.getSceneY());
}
});
this.draggable.setOnDragDetected(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
Dragboard db = draggable.startDragAndDrop(TransferMode.ANY);
ClipboardContent content = new ClipboardContent();
content.putString("Does not matter");
db.setContent(content);
event.consume();
lastX = event.getSceneX();
lastY = event.getSceneY();
}
});
}
}
private synchronized void HandleMouseMovement(double sceneX, double sceneY)
{
double deltaX = sceneX - lastX;
double deltaY = sceneY - lastY;
lastX = sceneX;
lastY = sceneY;
double currentXAnchor =AnchorPane.getLeftAnchor(this.draggable);
double currentYAnchor =AnchorPane.getTopAnchor(this.draggable);
AnchorPane.setLeftAnchor(this.draggable, currentXAnchor + deltaX*1.5);
AnchorPane.setTopAnchor(this.draggable, currentYAnchor + deltaY*1.5);
}
}
sample.fxml
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.shape.Rectangle?>
<GridPane xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10" prefHeight="500" prefWidth="500">
<AnchorPane>
<Rectangle fx:id="draggable" width="40" height="50" AnchorPane.topAnchor="20" AnchorPane.leftAnchor="20"/>
</AnchorPane>
</GridPane>
+0
それでは、スピードの問題は、同時にハンドデルを使った複数の移動イベントと関係していたようです。 'HandleMouseMovement'を' synchroized'にすると、その問題が解決されました。 (ほとんどの場合) – FrankT
関連する問題
- 1. javafxでペインをリフレッシュする方法
- 2. JavaFXボタンを1つのペインから別のペインにドラッグ
- 3. 矢印を描く方法JavaFX? (ペイン)
- 4. JavaFX重複ペイン
- 5. JavaFXのキャンバスサイズをペイン
- 6. JavaFX:ノードがペイン上でドラッグされたときにポリラインを動的に更新(再計算+再描画)する
- 7. JavaFXでペインを拡大する
- 8. javafxでペインにサークルを配置する
- 9. javafx:ペイン上で動的にスタイルを変更します。
- 10. ペインに基づいてカスタムJavaFXコントロールを実装する方法
- 11. javafxのペインにラベルを配置する方法
- 12. JavaFX JSONマップをペインに配置する方法
- 13. Javafx:ノードをドラッグしてペイン内の場所にドロップしてコピーする
- 14. JavaFXの既存のペインからコントローラにアクセスする方法は?
- 15. JavaFXでペインを切り替える
- 16. JavaFX ImageViewのクリックでウィンドウを最小化する方法は?
- 17. JavaFX:画像をペインに保存する
- 18. JavaFX:同じ位置にある2つ以上のペイン
- 19. ImageViewを使用してJavafxイメージスライダを作成する方法
- 20. JavaFx描画イメージ内部ペイン
- 21. JavaFX:ペインへのトラブルバインディングのプロパティ
- 22. FXML/JavaFX ImageViewをクリック可能にする方法は?
- 23. JavaFX ImageView - イメージクリーンアップ
- 24. JavaFXダウンサイズImageView
- 25. このようにJavaFXのでペインの境界線にテキストを追加する方法のJavaFX
- 26. ドラッグをキャンセルするJavaFX
- 27. 別のクラスからJavaFX ImageViewにアクセスする方法
- 28. ポリゴンのドラッグ可能な境界を設定する方法 - JavaFX
- 29. 行の円のドラッグを制限する方法。 JavaFX
- 30. JavaFXのは、ImageViewの
の可能性のある重複[JavaFXの2にドラッグすることによって、ノードを移動する正しい方法?]( http://stackoverflow.com/questions/10682107/correct-way-to-move-a-node-by-dragging-in-javafx-2)。より洗練されたもの(および複雑なもの)については、[Oracle JavaFXサンプルペーパードールアプリケーション](https://docs.oracle.com/javase/8/javafx/events-tutorial/paper-doll.htm)を参照してください。 )。 – jewelsea