Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>1) consider using <a href="http://download.oracle.com/javase/tutorial/uiswing/components/spinner.html" rel="nofollow noreferrer">JSpinner</a> instead of <code>JFormattedTextField</code> because there you can set <a href="http://download.oracle.com/javase/6/docs/api/javax/swing/SpinnerNumberModel.html" rel="nofollow noreferrer">SpinnerNumberModel</a> for initial values </p> <p>from API</p> <pre><code>Integer value = new Integer(50); Integer min = new Integer(0); Integer max = new Integer(100); Integer step = new Integer(1); </code></pre> <p>and with simple hack for <code>JSpinner</code> (with <code>SpinnerNumberModel</code>) it doesn't allows another input as Digits, otherwise is there possible input any of <code>Chars</code></p> <p>2) for <code>JFormattedTextField</code> you have to implements</p> <ul> <li>DocumentListener</li> <li>Document</li> </ul> <p>and of both cases for <code>JFormattedTextField</code> you have to write workaround for catch if value is less or more than required range ...</p> <p>EDIT:</p> <p>.</p> <p><img src="https://i.stack.imgur.com/3kpA8.jpg" alt="enter image description here"></p> <p>.</p> <p>not true at all, :-) you are so far from ... simple wrong :-), there is small mistake with your result, please look at this code</p> <pre><code>import java.awt.BorderLayout; import java.text.NumberFormat; import javax.swing.*; import javax.swing.text.*; public class TestDigitsOnlySpinner { public static void main(String... args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame frame = new JFrame("enter digit"); JSpinner jspinner = makeDigitsOnlySpinnerUsingDocumentFilter(); frame.getContentPane().add(jspinner, BorderLayout.CENTER); frame.getContentPane().add(new JButton("just another widget"), BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); } private JSpinner makeDigitsOnlySpinnerUsingDocumentFilter() { JSpinner spinner = new JSpinner(new SpinnerNumberModel()); JSpinner.NumberEditor jsEditor = (JSpinner.NumberEditor) spinner.getEditor(); JFormattedTextField textField = jsEditor.getTextField(); final DocumentFilter digitOnlyFilter = new DocumentFilter() { @Override public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException { if (stringContainsOnlyDigits(string)) { super.insertString(fb, offset, string, attr); } } @Override public void remove(FilterBypass fb, int offset, int length) throws BadLocationException { super.remove(fb, offset, length); } @Override public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException { if (stringContainsOnlyDigits(text)) { super.replace(fb, offset, length, text, attrs); } } private boolean stringContainsOnlyDigits(String text) { for (int i = 0; i &lt; text.length(); i++) { if (!Character.isDigit(text.charAt(i))) { return false; } } return true; } }; /*NumberFormat format = NumberFormat.getIntegerInstance(); format.setGroupingUsed(false);// or add the group chars to the filter NumberFormat format = NumberFormat.getInstance();*/ NumberFormat format = NumberFormat.getPercentInstance(); format.setGroupingUsed(false); format.setGroupingUsed(true);// or add the group chars to the filter format.setMaximumIntegerDigits(10); format.setMaximumFractionDigits(2); format.setMinimumFractionDigits(5); textField.setFormatterFactory(new DefaultFormatterFactory(new InternationalFormatter(format) { private static final long serialVersionUID = 1L; @Override protected DocumentFilter getDocumentFilter() { return digitOnlyFilter; } })); return spinner; } }); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload