1

JTextField名前とJTextArea呼ばれるものと住所と呼ばれるものがあります。私の要件は、ユーザーが名前を入力してキーJTextFieldを押したときEnterに、カーソルがアドレスである次のテキスト領域に移動することです。

現在、タブキーを押すことで、あるテキストフィールドから別のテキストフィールドに移動できます(デフォルトだと思います)。これを禁止して、ENTERキーだけでカーソルを転送したい。

を試しtransferfocus()ましたが、Enter キーを押してもカーソルがテキスト領域に移動しません。どうすればこれを達成できますか?

4

3 に答える 3

2

私の要件は、ユーザーが JTextField に名前を入力して Enter キーを押したときに、カーソルが Address である次のテキスト領域に移動することです。

コンポーネントが通常のタブ順序で互いに続くと仮定すると、一般的なコードを記述できます。

Action enterAction = new AbstractAction()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
        manager.getFocusOwner().transferFocus();
    }
}

...

textField.addActionListener( enterAction );

現在、タブキーを押すことで、あるテキストフィールドから別のテキストフィールドに移動できます(デフォルトだと思います)。これを禁止してENTERキーだけでカーソルを移動させたい。

なぜこれを禁止したいのですか?あなたが言うように、タブはデフォルトであるため、ほとんどのユーザーはこのアプローチに精通しています。UI を作り直して、ユーザーに選択肢を与えないでください。

于 2013-05-10T15:28:54.273 に答える
0

あなたはSwingを使っていると思います..返事が遅くなってすみません..

JTextField -> 右クリック -> キー プレス イベントに移動

private void NameKeyPressed(java.awt.event.KeyEvent evt) {
        int a = evt.getKeyCode();
        if (a == 10) {                     // for enter key
          Address.requestFocus();
        } 
}
于 2014-04-08T11:44:27.420 に答える
-1

@satyaの答えは正しいですが、マジックナンバーを避けるためのわずかな変更は次のとおりです。

private void jTextFieldItmCodeKeyPressed(java.awt.event.KeyEvent evt) {                                             
    if(evt.getKeyCode()==KeyEvent.VK_ENTER){
       Address.requestFocus();
    }   
}
于 2015-04-08T15:52:10.730 に答える