class IntFormatter extends AbstractFormatter { @Override public void install(final JFormattedTextField ftf) { int prevLen = ftf.getDocument().getLength(); int savedCaretPos = ftf.getCaretPosition(); super.install(ftf); if (ftf.getDocument().getLength() == prevLen) { ftf.setCaretPosition(savedCaretPos); } } public Object stringToValue(String text) throws ParseException { return Integer.parseInt(text); } public String valueToString(Object value) throws ParseException { return Integer.toString(((Number) value).intValue()); } }
@Override public void run() { int i = 0; int selectionStart = timeField.getSelectionStart(); if (ev.getClickCount() % 3 == 2) { timeField.setCaretPosition(selectionStart); } else if (ev.getClickCount() % 3 == 1) { int m = timeField.getText().length() + 1; while (i < m) { if (i >= selectionStart) { Pattern pattern = Pattern.compile("(\\w+)"); Matcher matcher = pattern.matcher(timeField.getText()); while (matcher.find()) { if ((matcher.start(1) <= i) && (matcher.end(1) >= i)) { timeField.setSelectionStart(matcher.start(1)); timeField.setSelectionEnd(matcher.end(1)); break; } } i = m + 1; } i++; } ev.consume(); } } });
replace( fb, off + 1, len, s, attr ); try { getFormattedTextField().setCaretPosition( off + 1 + len );
public static void main(String[] args) { NumberFormat format = NumberFormat.getInstance(); NumberFormatter formatter = new NumberFormatter(format) { @Override public void install(JFormattedTextField pField) { final JFormattedTextField oldField = getFormattedTextField(); final int oldLength = pField.getDocument().getLength(); final int oldPosition = pField.getCaretPosition(); super.install(pField); if (oldField == pField && oldLength == pField.getDocument().getLength()) { pField.setCaretPosition(oldPosition); } } }; JFormattedTextField field = new JFormattedTextField(formatter); field.setValue(1234567890); JOptionPane.showMessageDialog(null, field); }
source.setCaretPosition(caretPosition);
source.setCaretPosition(caretPosition);
source.setCaretPosition(caretPosition);
source.setCaretPosition(caretPosition);
source.setCaretPosition(caretPosition);
inreplyto.setCaretPosition(0); replywith.setCaretPosition(0); replyby.setCaretPosition(0);
@Override public void caretUpdate(CaretEvent e) { if (0 == ((DefaultEditor) spinner.getEditor()).getTextField().getCaretPosition()) { if (((DefaultEditor) spinner.getEditor()).getTextField().getText().length() > 13) { ((DefaultEditor) spinner.getEditor()).getTextField().setCaretPosition(13); } } } });
inreplyto.setCaretPosition(0); replywith.setCaretPosition(0); replyby.setCaretPosition(0);