操作
機能 #93
未完了JavaFXで右クリックしたらクリップボードに所定のテキストをコピーする
開始日:
2019/06/13
期日:
進捗率:
80%
予定工数:
説明
JavaFXで画面を右クリックしたら、その時点で表示されているコンテンツに基づく所定の文字列を生成し、
それをOS(デスクトップ)の標準クリップボードへコピーする。
高橋 徹 さんが5年以上前に更新
- ステータス を 新規 から 進行中 に変更
- 担当者 を 高橋 徹 にセット
- 進捗率 を 0 から 50 に変更
JavaFXには、OSのクリップボードを表現するjavafx.scene.input.Clipboardクラスがある。
OpenJFX 12 のJavadoc にあるClipboard
final Clipboard clipboard = Clipboard.getSystemClipboard();
final ClipboardContent content = new ClipboardContent();
content.putString("Some text");
clipboard.setContent(content);
- getSystemClipboard() でOSのクリップボードインスタンスを取得
- ClipboardContent のインスタンスを生成し、テキストを挿入
- setContent(content) でクリップボードにデータをセット
高橋 徹 さんが5年以上前に更新
右クリックの認識
Sceneにマウスクリックのハンドラーを登録し、右クリックが押されているかを次のコードでチェックしたところ
認識されなかった。
scene.setOnMouseClicked(e -> if (e.isSecondaryButtonDown()) { copyClipboard() });
MouseClickedのイベントは、まずマウスボタンが押され、次に離されてから発生するので、発生時にはボタンは押されていないためと推定。そこで、次のようにコードを修正。
scene.setOnMouseClicked(e -> if (e.getButton() == MouseButton.SECONDARY) { copyClipboard() });
操作