2010-11-23 24 views
2

私はこの方法で長時間苦労してきました。 jTextFieldの入力を終えたら、テキストフィールドの外のウィンドウをクリックするとフォーカスが失われてしまいます。私はこれを行う方法を理解することはできません。私ができることは、次のテキストフィールドにフォーカスを移すことです。メインウィンドウをクリックしたときにjTextFieldでフォーカスが失われるようにしたい

答えて

2

を、あなたが焦点に失いたくないのはなぜ?ユーザーがウィンドウをクリックしてテキストフィールドにフォーカスを失わせるようにすると、デザインが改善されるはずです。

とにかく、別のコンポーネントがフォーカスを取得したときにテキストフィールドのフォーカスが失われます。デフォルトでは、パネルにはフォーカスが設定されていないため、パネルをクリックしてもテキストフィールドのフォーカスが失われることはありません。今もちろん

panel.setFocusable(true); 

ユーザーがTabキーを使用する場合、パネルは現在のタブ順に含まれます:パネルのフォーカス可能にします。これはもう一つの悪いデザインのようだ。

+0

私はnetbeansでこれを行う方法を理解することはできません。私はフォーカス可能なプロパティをチェックしましたが、何もしないようです。私は、パネルが作成された後にコードを挿入することができます。私はそれを編集した後にテキストフィールドb/cからフォーカスを得たいと思っています。キーボードショートカット "p"を使用してボタンをアクティブにしたいと考えています。私は何かがフォーカスを失ったときにボタンにフォーカスを与えることができると思います。 –

+1

申し訳ありませんが、setFocusable()はコンポーネント間でタブ移動する場合にのみ機能します。マウスを使用している場合は、PanelにMouseListenerを追加してから、requestFocusInWindow()メソッドを使用してパネルにフォーカスを移す必要があります。これで、フレーム上のボタンを呼び出す標準的なアプローチが「Alt-P」である理由がわかります。テキストフィールドにフォーカスが失われるという余分なステップをユーザが強制することはありません。 MSのような企業は、実行可能なGUIを開発するために多額の資金を費やしています。あなたが通常のデザインから離れていくときはいつでも、ユーザーが学ぶ必要がある複雑なUIを持っています。単純にする。 – camickr

0

は、あなたのクラスはJFrameのを拡張して考えてみましょう:

JTextField jTextField1 = new JTextField(); 

addMouseListener(new java.awt.event.MouseAdapter() { 
      public void mouseClicked(java.awt.event.MouseEvent evt) { 
       jTextField1.setFocusable(false); 
      } 
     }); 

・ホープ、このヘルプ...

関連する問題