4条回答 默认 最新
- 小優YoU 2017-12-25 06:22关注
swing的话,JTextField添加监听器就可以了,代码如下
final int PRECISION = 2; // FIXME 小数位数为2, 建议可配 final JTextField input = new JTextField(); // 输入框 // 添加监听器 input.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { String text = input.getText(); // 当前输入框内容 char ch = e.getKeyChar(); // 准备附加到输入框的字符 // 限制不能输入非数字和小数点 if(!(ch >= '0' && ch <= '9') && ch != '.') { e.consume(); // 销毁当前输入字符 // 限制不能是小数点开头 } else if("".equals(text) && ch == '.') { e.consume(); } else if(text.contains(".")){ // 限制不能重复输入小数点 if(ch == '.') { e.consume(); // 限制小数位数 } else { int idx = text.indexOf('.'); String tmp = text.substring(idx + 1); if(tmp.length() >= PRECISION) { e.consume(); } } } } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub } });
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 4无用
悬赏问题
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错
- ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
- ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
- ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
- ¥50 如何openEuler 22.03上安装配置drbd
- ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
- ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
- ¥15 Windows11, backspace, enter, space键失灵