最近写了一个小程序,需要用到数字输入框,感觉这个东西大家都在用,但是竟然没有找到一个控件,比较郁闷,所以就自己写了一个,大家可以分享一下。欢迎使用,欢迎提意见。
package com.laozhao.msas.util;
import java.awt.Toolkit;
import java.util.regex.Pattern;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
/**
*
* 数字输入框 number(precision,scale) precision:1~38 scale:0~127
*
* @author LaoZhao
*
*/
public class NumberFile extends JTextField {
/**
*
*/
private static final long serialVersionUID = 7766646453110003951L;
private int precision = 8;
private int scale = 0;
private final Pattern intp = Pattern.compile("\\d+");
private Pattern dicp = Pattern.compile("\\d{1," + (precision - scale)
+ "}[.]{1}\\d{0," + scale + "}");
public int getPrecision() {
return precision;
}
public int getScale() {
return scale;
}
public NumberFile() {
super();
setDocument(new NumberDocument());
}
public NumberFile(int precision, int scale) {
super();
setScale(precision, scale);
setDocument(new NumberDocument());
}
public void setScale(int precision, int scale) {
this.precision = precision;
this.scale = scale;
if (precision < 1 || precision > 38) {
throw new java.lang.IllegalArgumentException(
"precision must letter than 38 and bigger than 1");
} else if (scale < -1 || scale > 127) {
throw new java.lang.IllegalArgumentException(
"scale must letter than 127 and bigger than -1");
} else if (precision <= scale) {
throw new java.lang.IllegalArgumentException(
"precision must bigger than scale");
} else {
dicp = Pattern.compile("\\d{1," + (precision - scale)
+ "}[.]{1}\\d{0," + scale + "}");
}
}
public Integer getIntValue() {
return getDoubleValue().intValue();
}
public Double getDoubleValue() {
return Double.parseDouble(getText());
}
class NumberDocument extends PlainDocument {
/**
*
*/
private static final long serialVersionUID = 618631385104970883L;
public NumberDocument() {
super();
}
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
try {
System.out.println(str);
if (offs < precision - scale) {
if (!intp.matcher(getText(0, getLength()) + str).matches()) {
return;
}
} else {
if (!dicp.matcher(getText(0, getLength()) + str).matches()) {
return;
}
}
super.insertString(offs, str, a);
} catch (Exception e) {
Toolkit.getDefaultToolkit().beep();
}
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
NumberFile nun = new NumberFile(8, 3);
frame.add(nun);
nun.setScale(5, 2);
frame.setVisible(true);
frame.pack();
}
}
分享到:
相关推荐
这里使用了`<input>`标签创建了一个数字输入框,并绑定了`on:change`事件,当用户更改输入框中的值时会触发`changeNum`方法。 ##### 2. Submit Button ```html 提交" onclick="submit"> ``` 提交按钮用于收集用户...
此外,对于更复杂的计算,可能还需要考虑错误处理,如检查输入是否有效(非空、数字等),以及提供更丰富的用户交互,如清空输入框、显示错误提示等。 标签“源码”表明这篇文章可能提供了完整的HTML和JavaScript...
4. `number`:用于输入数字,可以设置最小值(min)和最大值(max)。 5. `date`:输入日期,遵循ISO 8601标准(YYYY-MM-DD)。 6. `checkbox`:创建复选框,用户可以多选。 7. `radio`:创建单选按钮,同一组内只能选择...
- **`type="number"`**:表示这是一个数字输入框。 - **`max="100"`**:设置最大值。 - **`min="1"`**:设置最小值。 #### 3.7 复选框 ```html <tr><td>: <td><input type="checkbox" name="hobby" value="11"/> ...
13. `number`:创建数字输入框,限制输入为整数或浮点数。 14. `range`:创建滑块控件,用于在一定范围内选取数值。 15. `date`, `month`, `week`, `time`, `datetime`, `datetime-local`:创建日期和时间选择器,...
(1)督办通知单的第一行是二号字小标宋标题“XX县人民政府督办通知单”,点击“添加”按钮,新添一个单元格,在单元格内容输入框内填入“XX县人民政府督办通知单”。 (2)此标题不是表格内容,则按照无...
- `number`: 数字输入框。 - `range`: 滑块输入框。 - `date`: 日期选择器。 - `month`: 月份选择器。 - `week`: 周选择器。 - `time`: 时间选择器。 - `datetime-local`: 本地日期时间选择器。 - `search`:...
- `number`: 数字输入框 - `search`: 搜索输入框 - `tel`: 电话号码输入框 - `url`: URL 输入框 **常见属性**: - `name`: 表单元素的名字,用于标识该元素。 - `value`: 表单元素的值,用于存储用户输入的数据。 -...
- `number`:数字输入框。 - `date picker`:日期选择器。 - `datalist`:提供自动提示列表。 3. **其他新标签**: - `ruby`:用于标注音译或注解,如汉字拼音。 - `iframe`:在页面中嵌入其他网页或框架。 *...
multiple属性适用于type="email"和type="file"的Input元素,使得用户可以在同一输入框中选择多个电子邮件地址或文件。例如,`<input type="file" name="img" multiple>`允许用户一次选择多张图片进行上传。 5. min...
在这个例子中,布局包含两个输入框(EditText)用于输入数字,以及按钮(Button)执行乘法运算。以下是基本的 XML 代码结构: ```xml <TextView> <!-- 显示提示信息 --> <TextView> <!-- 分隔符 --> ...
- `<input type="number">`是数字输入框。 - `<input type="range">`是滑块控件。 - `<input type="color">`是颜色选择器。 9. **盒模型**:`margin`用于设置外边距,例如`margin:20px;`。它有多种写法,如`...
- **只能输入数字的文本框(Number+[0-9]*pattern)** - 标签:<label for="number-pattern">Number+[0-9]*pattern: <input name="number" pattern="[0-9]*" id="number-pattern" value="" type="number"> - 作用:...
表单有两个重要的属性:`action`和`method`。`action`属性指定了处理...变量命名遵循一些规则,如首字符必须是字母或下划线,后续字符可以是字母、下划线或数字。了解并熟练掌握这些基础概念对于进行Web开发至关重要。
对于输入类型,HTML5新增了`tel`(电话号码验证)、`url`(网址验证)、`email`(电子邮件验证)、`date`(日期验证)、`time`(时间验证)、`number`(数字验证)、`range`(数字范围控制)和`color`(颜色选择器)...
创建一个表单,包括手机号输入框和验证码输入框,以及提交按钮。 - 提交表单时,发送POST请求到后端验证接口,将输入的验证码与服务器存储的验证码进行比对。 5. **验证逻辑**: - 在后端,接收到验证码后,与...
7. JavaScript数据类型:在JavaScript中,数字和字符串相加会产生字符串连接,因此`x+y`的结果是"11number",选a)。 8. HTML数学表达式:HTML中可以使用`<sup>`标签表示上标,`<sub>`表示下标。因此,正确表示2²=4...