2012-03-31 13 views
5

私はJTextFieldにテキストをつけています。テキストフィールドをクリックすると、カーソルがフィールドの最後に移動します。カーソルがフォーカスされると、カーソルがフィールドの先頭に移動します。JTextFieldまたはJComboBoxのカーソルを先頭に移動

私は編集可能なJComboBoxで同じ問題を抱えています。

このカーソルのフォーカスをどのようにして達成できますか?

+1

私はコンテンツ内にテキストを含む編集可能なJComboBoxを持っています.JComboBoxをクリックすると、編集可能なJComboBoxの開始位置にマーカーを移動することができます。デフォルトでは、テキストフィールドの最後に移動します。私がフィールドの開始を言ったとき、私はドロップダウンリストの最初のアイテムを意味しません。 – Karen

+0

ご清聴ありがとうございます。私の混乱は、そのコメントの編集を通していくらかソートされました。 :) –

答えて

5
/** 
* On gaining focus place the cursor at the start of the text. 
*/ 
public class CursorAtStartFocusListener extends FocusAdapter { 

    @Override 
    public void focusGained(java.awt.event.FocusEvent evt) { 
     Object source = evt.getSource(); 
     if (source instanceof JTextComponent) { 
      JTextComponent comp = (JTextComponent) source; 
      comp.setCaretPosition(0); 
     } else { 
      Logger.getLogger(getClass().getName()).log(Level.INFO, 
        "A text component expected instead of {0}", 
        source.getClass().getName()); 
     } 
    } 
} 

jTextField1.addFocusListener(new CursorAtStartFocusListener()); 
jComboBox1.getEditor().getEditorComponent().addFocusListener(new CursorAtStartFocusListener()); 
// Only one instance of CursorAtStartFocusListener needed. 
0

私は、これはあなたが探しているものかもしれないと思う:

JTextField t = new JTextField(); 
t.setHorizontalAlignment(JTextField.LEFT); 
2

あなたは

comp.setCaretPosition(インデックス)は、このコマンドを使用することができます。

このインデックスは、キャレット位置です。

関連する問題