2012-03-26 3 views
0

doClick()と同様のボタンのクリックをシミュレートすることはできますが、グラフィカルにシミュレートするだけで、ActionEventは生成されません。私はクラスを拡張することができます知っている場合は、単純なif文で自分のdoClickを行います。しかし、他の可能性はありますか?JButton .doClick()何もせずに?

私はユーザーが押すことができるボタンを持っているが、コンピュータ(ゲーム内の)がボタンを「押す」ことがあるため、これが欲しい。すべてのロジックは別のスレッドで実行されていますが、私はユーザー用に表示したいだけです。

答えて

1

あれば、それをクリックしてはならないとき、単にボタンを無効にすることを好むだろう見た目の詳細を掘り下げて使用していると感じたら、そのボタンが「下がった」状態にあることを検出してペイントする方法を見ることができます。

あなたは、ButtonModelを拡張/実装して、setPressed/isPressed状態を混乱させることができますか?

+0

私は、最も簡単な解決策は、アクションリスナーのモデルをチェックして、手動プレスかコンピュータプレスかを検出することだと思います。しかし、私はまだボタン上のグラフィカルな "クリック"するためのソリューションがあれば興味深いです。 – joxxe

0

ボタンをクリックします。この試してみてください。

try 
     { 
      robot = new Robot(); 
      robot.mouseMove(0,500); 
      robot.mousePress(InputEvent.BUTTON1_MASK); 
      robot.mouseRelease(InputEvent.BUTTON1_MASK); 
     }catch(Exception e){} 

をしかし、多分あなたは、ユーザーが

Button.setEnabled(false);

+0

問題は、グラフィカルなクリックのように見せたいということです。しかし、何も行動を起こさないように(あるいは、リスナーに「捨てる」などの)何らかの行動をとるべきではありません。 – joxxe

+0

あなたは質問が明確ではない、何を探しているのですか? – exomic

0

有効かどうかを設定できますので、 "buttonName.setEnabled(false);"を使用してください。

1

最も簡単な解決策は、モデルをActionListenerでチェックすることです。

私は2つを区別する方法はありません。そのモデルは誰がそのメソッドを呼び出すのかを知らない。代わりに、すべてのリスナーを保存し、doClick()を呼び出して、リスナーを復元することができます。アクション、変更、アイテムのリスナーを確認する必要があるようです。

関連する問題