jtextfieldのクリックをどのようにシミュレートしますか? jbutton doclick()に相当しますか?
-
20-09-2019 - |
質問
私はJavaプロジェクトに取り組んでおり、JTextfieldのクリックをキープレスにシミュレートする必要があります。私が探しているのは、jbutton doclick()メソッドに相当します。
キープレス「Enter」にJTextfieldのクリックとまったく同じ関数を実行させようとしています。
他にどのような情報を提供するかわからない。前もって感謝します。
解決 2
わかりました、助けてくれてありがとう。私は明確ではなかったと思いますが、あなたのアイデアのいくつかのおかげで、コードを機能させる方法を発見しました。
私はすでに両方の関数によって呼び出されたプライベートメソッドを作成することを考えていましたが、コードの一部は、ユーザーがクリックしているJTextFieldを知る必要があります。 .getFocusowner()を発見しました。これにより、現在のアイテムをフォーカス(jtextfield)で参照できます。このようなもの
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ENTER) {
Object which = JFrame.getFocusOwner();
if(which.getClass() == JTextField.class)
foo(which);
}
}
public void mouseClicked(MouseEvent e) {
Object which = e.getSource();
if(which.getClass()== JTextField.class) {
foo(which);
}
}
おそらくこれを行うためのより良い方法がありましたが、基本的に私はjtextfieldsの配列があり、ユーザーが次のjtextfieldでクリックしたときにプログラムが適切に機能していましたが、Enterを押すと、入力されたばかりのJTextfieldを呼び出す方法がわかりませんでしたそこで、jtextfieldのクリックをシミュレートしたかった(フォーカスが必要です)。私は自分の問題全体を説明するべきだったと思います。
ありがとうございました。
他のヒント
public void simulateKey(KeyEvent e, Component c) {
Field f = KeyEvent.class.getField("focusManagerIsDispatching");
f.setAccessible(true);
f.set(e, Boolean.TRUE);
c.dispatchEvent(e);
}
jtextfieldに「Enter」を送信します。これは盗まれました ここ.
マウスとキープレスの両方で同じことを起こしたい場合、両方で呼び出される方法を持っていることはもっと理にかなっていませんか?つまり、次のような方法があります fieldClicked
それは両方によって呼ばれます MouseListener
そして、 KeyListener
. 。これはデバッグが簡単になります - イベントではなく、非常に混乱する可能性があり、おそらくより読みやすいでしょう。
私が欲しいのは、ユーザーがEnterを押すと、フレーム内のどこでもクリックするときと同じコードを呼び出すことです
それでも私には意味がありません。
ユーザーがフレーム上の任意の場所をクリックすると、いくつかのことが起こります。
a)テキストフィールドは焦点を失います
b)他の一部のコンポーネントが焦点を当てます
ActionListenerをテキストフィールドに追加できます。 ActionListenerは、Enterキーが押されたときに呼び出されます。しかし、マウスクリックを生成するためにフレームのどこでどこで推測するかを推測するにはどうすればよいですか?私にとってはランダムロジックのようです。