栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使JSpinner只读取数字但也可以检测退格

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使JSpinner只读取数字但也可以检测退格

  • JFormattedTextField
    正确的实现不正确
    JSpinner
    ,您有实现
    documentFilter
    用于过滤从keyboad
    Chars
    输入或从ClipBoard粘贴的un_wanted的工具,(感谢@StanislavL)

  • 你有自己的问题与解决

    selectAll()
    focusGained()
    包裹成
    invokeLater()

import java.awt.BorderLayout;import javax.swing.JButton;import javax.swing.Jframe;import javax.swing.JSpinner;import javax.swing.SpinnerNumberModel;import javax.swing.SwingUtilities;import javax.swing.text.*;public class TestDigitsonlySpinner {    public static void main(String... args) {        SwingUtilities.invokeLater((Runnable) new Runnable() { @Override public void run() {     Jframe frame = new Jframe("enter digit");     frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);     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 makeDigitsOnlySpinner_BasicAttempt() {     JSpinner spinner = new JSpinner(new SpinnerNumberModel());     return spinner; } private JSpinner makeDigitsonlySpinnerUsingdocumentFilter() {     JSpinner spinner = new JSpinner(new SpinnerNumberModel(0, 0, 20, 1));     JSpinner.NumberEditor jsEditor = (JSpinner.NumberEditor) spinner.getEditor();     final document jsDoc = jsEditor.getTextField().getdocument();     if (jsDoc instanceof Plaindocument) {         Abstractdocument doc = new Plaindocument() {  private static final long serialVersionUID = 1L;  @Override  public void setdocumentFilter(documentFilter filter) {      if (filter instanceof MydocumentFilter) {          super.setdocumentFilter(filter);      }  }         };         doc.setdocumentFilter(new MydocumentFilter());         jsEditor.getTextField().setdocument(doc);     }     return spinner; }        });    }    private static class MydocumentFilter extends 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 < text.length(); i++) {     if (!Character.isDigit(text.charAt(i))) {         return false;     } } return true;        }    }    private TestDigitsonlySpinner() {    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486720.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号