JFormattedTextField只允许整数

时间:2014-12-03 21:26:25

标签: java swing jformattedtextfield

我一直在搜索,但我找不到一个我理解如何创建只允许整数作为输入的JFormattedTextField的地方。它甚至可能吗?

编辑 从@HovercraftFullOfEels发现了这段代码:

public class QuantFilter extends DocumentFilter {
    @Override
    public void insertString(FilterBypass fb, int offset, String string,
             AttributeSet attr) throws BadLocationException {

          Document doc = fb.getDocument();
          StringBuilder sb = new StringBuilder();
          sb.append(doc.getText(0, doc.getLength()));
          sb.insert(offset, string);

          if (test(sb.toString())) {
             super.insertString(fb, offset, string, (javax.swing.text.AttributeSet) attr);
          }
       }

       private boolean test(String text) {
          try {
             Integer.parseInt(text);
             return true;
          } catch (NumberFormatException e) {
             return false;
          }
       }
       @Override
       public void replace(FilterBypass fb, int offset, int length, String text,
             AttributeSet attrs) throws BadLocationException {

          Document doc = fb.getDocument();
          StringBuilder sb = new StringBuilder();
          sb.append(doc.getText(0, doc.getLength()));
          sb.replace(offset, offset + length, text);

          if (test(sb.toString())) {
             super.replace(fb, offset, length, text, (javax.swing.text.AttributeSet) attrs);
          }
       }

       @Override
       public void remove(FilterBypass fb, int offset, int length)
             throws BadLocationException {
          Document doc = fb.getDocument();
          StringBuilder sb = new StringBuilder();
          sb.append(doc.getText(0, doc.getLength()));
          sb.delete(offset, offset + length);

          if (test(sb.toString())) {
             super.remove(fb, offset, length);
          }
       }
}

覆盖说它应该覆盖一个方法,如果我认为它没有输入insertString()

0 个答案:

没有答案