私は単一のフローパネルの中にいくつかのボタンを含むjavafxアプリケーションを持っています。ボタンをドラッグ可能にするために、私は各ボタンを個々のペインの中に入れました。ユーザーはいずれかのペインから任意のボタンを選択し、&を他のペインにドロップすることができます。たとえば、ペイン1からボタンを取得し、ドラッグしてペイン5の中にドロップします。JavaFXボタンを1つのペインから別のペインにドラッグ
ユーザが選択するボタンは以前は分かっていなかったので、まず何かをドラッグボードに追加する必要があると思いますそれはsetOnDragDropped操作でドラッグボードから取得できます。
私が使用してimageviewsの間に画像をドラッグ&ドロップすることができています:のみ、
Dragboard db = iv_1.startDragAndDrop(TransferMode.MOVE);
ClipboardContent content = new ClipboardContent();
content.putImage(iv_1.getImage());
をしかし、インクルードが使用可能な特定のオプションではないので、私は、dragboardにボタンを追加する方法を把握することはできませんcontent.putText、またはcontent.putString()のように適用されないオプション...
助けていただければ幸いです。これは私がこれまで持っているものです。
private void btn_1_setOnDragDetected(MouseEvent event) {
Dragboard db = btn_1.startDragAndDrop(TransferMode.MOVE);
ClipboardContent content = new ClipboardContent();
// below seems to be wrong
content.put(dataFormat,btn_1.toString());
db.setContent(content);
event.consume();
}
private void btn_1_setOnDragOver(DragEvent event) {
if (event.getGestureSource() != btn_1 &&
event.getDragboard().hasString()) {
event.acceptTransferModes(TransferMode.MOVE);
}
event.consume();
}
private void pane_5_setOnDragDropped(DragEvent event) {
Dragboard db = event.getDragboard();
boolean success = false;
if (db.hasString()) {
// below must be wrong
pane_5.setId(db.getString());
success = true;
}
event.setDropCompleted(success);
event.consume();
}
ジャストアイデアを投げます。重要な詳細をボタンにコピーして、その場所でドラッグ・リリースの新しいボタンを作成できますか?次に、ボタンの機能を決定するために詳細を使用しましたか? – Sedrick
'setId'はボタンをペインに追加しません。 java [documentation](https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#getId--)を参照してください。 – theKidOfArcrania
['startFullDrag'](https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#startFullDrag--)+ [' MouseDragEvent.getGestureSource']を使用します(https:///docs.oracle.com/javase/8/javafx/api/javafx/scene/input/MouseDragEvent.html#getGestureSource--)。そして、btwはそのアイデアを 'Dragboard'で投げ捨てます。あなたのアプリケーションのどこかで 'Button'をドラッグするのは意味がありませんが、' Dragboard'はソースアプリケーションに依存しないデータをドラッグするために使われます。 – fabian