Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

フォーカスが当たらない…

初めまして。Java素人のものです。

ログイン画面を開いた時、フォーカスが移動しなくて困っています。

【詳細】
1.ログイン画面には、ユーザとパスワードのテキストフィールドがある
2.ログイン画面を開いた時に、フォーカスが自動的にユーザのテキストフィールドに移動するようにしたい

以下のようにしてみたのですが、移動しませんでした。(一部抜粋)

public class abc extends JDialog{
  // テキストフィールド:User1
  JTextField User1 = new JTextField();
  // パスワードフィールド:Password1
  JPasswordField PassWord1 = new JPasswordField();
      ・
      ・
      ・
  //ログイン画面の部品構築
  private void jbInit() throws Exception {
      ・
      ・
      ・
    // キーイベントリスナをフォーカスのあたるコンポーネントに追加
    User1.addKeyListener(new SwitchUserKeyEventUser());
    PassWord1.addKeyListener(new SwitchUserKeyEvent());
    }
    
    //ウィンドウ表示
    public void show(Component componentParent) {
      Point p;
      Dimension d;
      p = componentParent.getLocation();
      d = componentParent.getSize();
      this.setLocation(p.x + (d.width - this.getWidth())/2,p.y + (d.height - this.getHeight())/2);
      super.show();
      User1.setRequestFocusEnabled(true);    
      User1.requestFocusInWindow();
    }

requestFocusInWindowの使い方が悪いのでしょうか?
それとも別のメソッドが必要なのでしょうか?
分かる方ご教授お願い致します。

※JREは1.6.0_07です。

3

回答

3328

閲覧

3件の回答

評価

0

show()は非推奨なので、setVisible()を使おう。

メソッド名を検索エンジンに放り込んだら、たくさんヒットする。
最初の数件を参照すれば、解決するでしょ。

評価

0

> public void show(Component componentParent) 
これは一体なんだんねん?
わからん要素が多すぎる。
問題を再現できるミニプログラムを投稿してほしい。
参考:http://homepage1.nifty.com/algafield/sscce.html

評価

0

オーバーライドしてるだけでしょ。
内部でshow()を呼んでるし。

個人的には、コンポーネントのセットアップと可視化は、
分離した方がいいと思うけどね。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。