/** * Sets when edits are published back to the <code>JFormattedTextField</code>. If true, <code>commitEdit</code> is * invoked after every valid edit (any time the text is edited). On the other hand, if this is false than the * <code>DefaultFormatter</code> does not publish edits back to the <code>JFormattedTextField</code>. As such, the * only time the value of the <code>JFormattedTextField</code> will change is when <code>commitEdit</code> is * invoked on <code>JFormattedTextField</code>, typically when enter is pressed or focus leaves the * <code>JFormattedTextField</code>. * * @param commit Used to indicate when edits are committed back to the JTextComponent */ public void setCommitsOnValidEdit(boolean commit) { _formatter.setCommitsOnValidEdit(commit); }
jSpinner1 = new javax.swing.JSpinner(); jSpinner1.setFont(new java.awt.Font("Calibri", 0, 14)); jSpinner1.setModel(new javax.swing.SpinnerNumberModel(1, 1, 1000, 1)); JFormattedTextField field1 = ((JSpinner.NumberEditor) jSpinner1.getEditor()).getTextField(); ((NumberFormatter) field1.getFormatter()).setAllowsInvalid(false); DefaultFormatter formatter1 = (DefaultFormatter) field1.getFormatter(); formatter1.setCommitsOnValidEdit(true);
JTextComponent txt = new JFormattedTextField( new PositiveIntegerFormatter() ); txt.addPropertyChangeListener("value", yourPropertyChangeListener); import javax.swing.text.DefaultFormatter; import java.text.ParseException; public class PositiveIntegerFormatter extends DefaultFormatter { static final long serialVersionUID = 1l; public PositiveIntegerFormatter() { setValueClass(Integer.class); setAllowsInvalid(false); setCommitsOnValidEdit(true); } @Override public Object stringToValue(String string) throws ParseException { if (string.equals("")) return null; Integer value = (Integer)super.stringToValue(string); if ( Integer.signum(value.intValue()) < 0 ) throw new ParseException(string, 0); return value; } }
JTextComponent txt = new JFormattedTextField( new LimitedIntegerFormatter(limit) ); txt.addPropertyChangeListener("value", yourPropertyChangeListener); import javax.swing.text.DefaultFormatter; import java.text.ParseException; public class LimitedIntegerFormatter extends DefaultFormatter { static final long serialVersionUID = 1l; private int limit; public LimitedIntegerFormatter( int limit ) { this.limit = limit; setValueClass(Integer.class); setAllowsInvalid(false); setCommitsOnValidEdit(true); } @Override public Object stringToValue(String string) throws ParseException { if (string.equals("")) return null; if (string.length() > limit) throw new ParseException(string, limit); return super.stringToValue(string); } }
public static JFormattedTextField createHourField(ValueModel valueModel, boolean defaultNull) { DefaultFormatter defaultFormatter = new HourFormatter(defaultNull); defaultFormatter.setCommitsOnValidEdit(true); JFormattedTextField textField = new JFormattedTextField(defaultFormatter); Bindings.bind(textField, valueModel); return textField; }
ultraShortDateHourFormat, shortFormat, veryShortFormat), false, false); defaultFormatter.setCommitsOnValidEdit(commitsOnValidEdit);
public JDateTextField(boolean enableNull, boolean enableShortcuts, boolean commitsOnValidEdit) { super(); initActions(); initComponents(); DateFormat shortFormat = DateFormat.getDateInstance(DateFormat.SHORT); shortFormat.setLenient(false); DateFormat veryShortFormat = new SimpleDateFormat("ddMMyy"); veryShortFormat.setLenient(false); DefaultFormatter defaultFormatter = new RelativeDateFormatter( new MultiDateFormat(shortFormat, veryShortFormat), false, false); defaultFormatter.setCommitsOnValidEdit(commitsOnValidEdit); JFormattedTextField.AbstractFormatter displayFormatter = new RelativeDateFormatter( shortFormat, enableShortcuts, true); DefaultFormatterFactory formatterFactory = new DefaultFormatterFactory( defaultFormatter, displayFormatter, defaultFormatter); this.setFormatterFactory(formatterFactory); nullAction.setEnabled(enableNull); showCalendar = true; }
public static JFormattedTextField createHourField(boolean defaultNull) { DefaultFormatter defaultFormatter = new HourFormatter(defaultNull); defaultFormatter.setCommitsOnValidEdit(true); JFormattedTextField textField = new JFormattedTextField(defaultFormatter); textField.addFocusListener(new SelectAllTextFieldFocusListener()); return textField; }
JFormattedTextField jtf = editor.getTextField(); DefaultFormatter formatter = (DefaultFormatter) jtf.getFormatter(); formatter.setCommitsOnValidEdit(true); spinner.addChangeListener(new ChangeListener() {
jtf = ((JSpinner.DefaultEditor) value.getEditor()).getTextField(); DefaultFormatter df = (DefaultFormatter)jtf.getFormatter(); df.setCommitsOnValidEdit(true);
formatter.setMaximum(Integer.MAX_VALUE); formatter.setCommitsOnValidEdit(true);
/** Instantiates a new value spinner. */ public IntegerSpinner(int min, int max, int stepSize) { SpinnerNumberModel model = new SpinnerNumberModel(min, min, max, stepSize); setModel(model); JComponent comp = getEditor(); final JFormattedTextField field = (JFormattedTextField) comp.getComponent(0); DefaultFormatter formatter = (DefaultFormatter) field.getFormatter(); formatter.setCommitsOnValidEdit(true); addChangeListener( new ChangeListener() { private double oldValue = Double.MAX_VALUE; @Override public void stateChanged(ChangeEvent e) { Double doubleValue = IntegerSpinner.this.getDoubleValue(); if (doubleValue != oldValue) { double oldValueCopy = oldValue; oldValue = doubleValue; if (minIsZero && (doubleValue < 0.0)) { doubleValue = 0.0; field.setValue(doubleValue); } notifyListeners(oldValueCopy, doubleValue); } } }); }
JFormattedTextField field = (JFormattedTextField) comp.getComponent(0); DefaultFormatter formatter = (DefaultFormatter) field.getFormatter(); formatter.setCommitsOnValidEdit(true); myspinner.addChangeListener(new ChangeListener() {
formatter.setCommitsOnValidEdit(true); addChangeListener( new ChangeListener() {
NumberFormatter formatter = new NumberFormatter(numberFormat); formatter.setAllowsInvalid(false); formatter.setCommitsOnValidEdit(true);// seems to be a no-op -- aha -- it changes the value property but doesn't cause the result to
private void initTexField(final JFormattedTextField field, Number value) { field.setColumns(10); field.setValue(toDouble(value) / palette.getScale()); if (readOnly) { field.setEnabled(false); } else { //don't automatically revert invalid values (show msg instead): field.setFocusLostBehavior(JFormattedTextField.COMMIT); //post all valid edits: allows for applying all validations while still typing instead of on focus loss ((DefaultFormatter)field.getFormatter()).setCommitsOnValidEdit(true); //caret fix: default behavior puts it before 1st char, no matter where you click field.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { final int dot = field.getCaret().getDot(); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { field.getCaret().setDot(dot); } }); } }); } }
_formatter.setCommitsOnValidEdit(commit);