需求: JSpinner组件,除了上下按钮外,还可以手动输入,输入范围1---31, 超过范围的输入不进去。
利用PlainDocument重写insertString()好像不能用。在网上找到一个帖子http://guobutter.iteye.com/blog/1187150
SpinnerModel model = new SpinnerNumberModel(1, 1, 31, 1);
JSpinner numberSpinner = new JSpinner(model);
// 允许输入
JSpinner.NumberEditor editor = new JSpinner.NumberEditor(numberSpinner, "0");
numberSpinner.setEditor(editor);
JFormattedTextField textField = ((JSpinner.NumberEditor)numberSpinner.getEditor()).getTextField();
textField.setEditable(true);//开启输入功能
// 开启输入的值的限制
DefaultFormatterFactory factory = (DefaultFormatterFactory)textField.getFormatterFactory();
NumberFormatter formatter = (NumberFormatter)factory.getDefaultFormatter();
// formatter.setOverwriteMode(true);
// formatter.setFormat();
//formatter.setCommitsOnValidEdit(false);
formatter.setAllowsInvalid(false);这样可以实现控制输入,但是当删除里面的内容时候,总有一位输入不进去。初始化的时候,光标是在默认的一位数字左边闪。
请问大侠怎么设置可以将删除掉。
利用PlainDocument重写insertString()好像不能用。在网上找到一个帖子http://guobutter.iteye.com/blog/1187150
SpinnerModel model = new SpinnerNumberModel(1, 1, 31, 1);
JSpinner numberSpinner = new JSpinner(model);
// 允许输入
JSpinner.NumberEditor editor = new JSpinner.NumberEditor(numberSpinner, "0");
numberSpinner.setEditor(editor);
JFormattedTextField textField = ((JSpinner.NumberEditor)numberSpinner.getEditor()).getTextField();
textField.setEditable(true);//开启输入功能
// 开启输入的值的限制
DefaultFormatterFactory factory = (DefaultFormatterFactory)textField.getFormatterFactory();
NumberFormatter formatter = (NumberFormatter)factory.getDefaultFormatter();
// formatter.setOverwriteMode(true);
// formatter.setFormat();
//formatter.setCommitsOnValidEdit(false);
formatter.setAllowsInvalid(false);这样可以实现控制输入,但是当删除里面的内容时候,总有一位输入不进去。初始化的时候,光标是在默认的一位数字左边闪。
请问大侠怎么设置可以将删除掉。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货