質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Q&A

解決済

2回答

854閲覧

JavaFXのクリックとダブルクリックイベント両方欲しい

t.python

総合スコア73

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

0グッド

1クリップ

投稿2014/09/16 02:46

JavaFXでボタンのクリックについて質問です。

同じボタンでシングルクリックとダブルクリックの両方を定義したいのですが、必ずシングルクリックのイベントが実装されてしまいます。

どうすればいいでしょうか?

lang

1button.setOnMouseClicked(new EventHandler<MouseEvent>() { 2 @Override 3 public void handle(MouseEvent event) { 4 if (event.getButton().equals(MouseButton.PRIMARY) && event.getClickCount() == 2) { 5 // ダブルクリック 6 } 7 else if (event.getButton().equals(MouseButton.PRIMARY) && event.getClickCount() == 1) { 8 // シングルクリック 9 } 10 } 11});

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

コードは特に問題ないみたいなのですが、やりたいのは、ダブルクリック時にはシングルクリック(event.getClickCount() == 1 の時)を呼ばれないようにしたいということでしょうか?

もしそうならば、それはできません。
JavaFX に限らず、GUI では ダブルクリックのイベントの前には必ずシングルクリックのイベントが発生するというようになっています。
そのため、ダブルクリックのイベント処理を実装する場合には、すでにシングルクリックの処理が行われている前提で作らなければなりません。

投稿2014/09/17 05:56

yohshiy

総合スコア863

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t.python

2014/09/18 06:04

なるほど!!もう少し考えて実装しようと思います。 回答ありがとうございました!
guest

0

Java8(u20)+Windows7の環境で確認しました。

ご提示のプログラムを実行したところ、ダブルクリックすると、シングルクリック、ダブルクリックのイベントが順次発生します。

OS側のダブルクリック間隔を変えてもダブルクリックが発生しませんか?

なお、下記のように変更してみても、同じ挙動でした。
参考URLのように、ボタンの代わりにCircleを使っても同じ挙動でした。

lang

1button.setOnMouseClicked(new EventHandler<MouseEvent>() { 2 @Override 3 public void handle(MouseEvent event) { 4 final boolean primaryButtonClicked = event.getButton().equals(MouseButton.PRIMARY); 5 final int clickCount = event.getClickCount(); 6 if (primaryButtonClicked) { 7 if (clickCount == 2) { 8 // ダブルクリック 9 System.out.println("double-click"); 10 } 11 else if (clickCount == 1) { 12 // シングルクリック 13 System.out.println("single-click"); 14 } 15 } 16 } 17});

実行結果(ダブルクリックした時)

single-click double-click

参考URL:
mouseclick event - JavaFX: Reacting to Single, Double, and Triple Click - Stack Overflow

投稿2014/09/16 06:15

argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問