Переместить курсор JTextField или JComboBox в начало - PullRequest
5 голосов
/ 31 марта 2012

У меня есть JTextField с некоторым текстом.Когда я щелкаю текстовое поле, курсор перемещается в конец поля.Я хочу, чтобы курсор переместился в начало поля, когда оно станет сфокусированным.

У меня та же проблема с редактируемым JComboBox.

Как мне добиться позиционирования курсора на фокусе?

Ответы [ 3 ]

5 голосов
/ 31 марта 2012
/**
* 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.
2 голосов
/ 16 апреля 2012

Вы можете использовать эту команду

comp.setCaretPosition (index);

там индекс находится в позиции каретки.

0 голосов
/ 31 марта 2012

Я думаю, это то, что вы ищете:

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