- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要创建自定义文本字段,它将根据本地格式化方式格式化数值。所以我开了一个课:
public class NumberTextField extends JFormattedTextField
{...
构造函数看起来像这样:
public NumberTextField()
{
formater=new NumberFormatter();
formater.setAllowsInvalid( false );
nf=NumberFormat.getInstance();
formater.setFormat( nf );
this.setFormatter( formater );
}
最终结果是:
Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Number
at java.text.DecimalFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at javax.swing.text.InternationalFormatter.valueToString(Unknown Source)
at javax.swing.JFormattedTextField$AbstractFormatter.install(Unknown Source)
at javax.swing.text.DefaultFormatter.install(Unknown Source)
at javax.swing.text.InternationalFormatter.install(Unknown Source)
at javax.swing.JFormattedTextField.setFormatter(Unknown Source)
at hr.ikb.nasa.gui.custom.NumberTextField.<init>(NumberTextField.java:65)
at hr.ikb.nasa.gui.custom.NumberTextField.main(NumberTextField.java:35)
由于谷歌无法提供有用的东西,我想看看你对此有何评论。也许它没有任何值(value)需要处理 - 我尝试放入构造函数 this.setValue(new Double(0.0d));
或 this.setText("0");
- 这没有帮助..
最佳答案
(根据我下面的评论):子类化 JFormattedTextField
并调用 protected setFormat
方法可能不是正确的方法。来自 API 文档:
“通常不应调用此函数,而应设置 AbstractFormatterFactory 或设置值。”
相反,我建议不要对 JFormattedTextField 进行子类化,而是使用 JFormattedTextField(AbstractFormatter)
构造函数创建一个子类。我将保留下面原始响应中的代码,以防万一它有用 - 当数值的输入是可选的时,我通常使用此格式化程序,因此空白文本字段应暗示为空。
public class BlankAsNullNumberFormatter extends NumberFormatter {
private static final long serialVersionUID = 5867546077017490042L;
public BlankAsNullNumberFormatter(Class<? extends Number> numberKlazz) {
setValueClass(numberKlazz);
}
public BlankAsNullNumberFormatter(Class<? extends Number> numberKlazz, NumberFormat format) {
super(format);
setValueClass(numberKlazz);
}
public String valueToString(Object iv) throws ParseException {
if (iv == null) {
return "";
} else {
return super.valueToString(iv);
}
}
public Object stringToValue(String text) throws ParseException {
if ("".equals(text)) {
return null;
}
return super.stringToValue(text);
}
}
关于java - JFormattedTextField 中的 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1086108/
我有一个带有 DateFormat 的 JFormattedTextField。格式为“ddMMyy”。这种格式允许快速输入。当焦点丢失时,我希望字段中的文本更改为 LocalDate,因为这样更易于
嘿伙计们,我想知道是否可以将 JFormattedTextField 设置为具有电子邮件输入的自动格式。例如,当用户输入电子邮件地址时,我希望它接受如下内容:jsmith1@smith.com 但我希
我在代码中使用时间时遇到了一些麻烦: txtDauer = new JFormattedTextField(); txtDauer.setFormatterFactory(new DefaultFor
我想使用 JFormattedTextField 将 float 格式化为百分比值,允许输入从 0 到 100%(转换为 0.0f-1.0f),始终显示百分号并不允许任何无效字符。 现在我对 Numb
我有此代码,但无法正确获取MaskFormatter maskformatter MaskFormatter formatter = null; try { formatter = new
我正在扩展 JFormattedTextField 以添加监听器。我已经完成了这项工作,尽管这可能不是最好的方法。没有办法使用单个泛型构造函数吗? public class TimeLineTextC
我想获取 JFormattedTextField 的值并将其转换为字符串这是我的 JFormattedTextField 代码 这是我的代码: public void formattedTextFie
我有一个字符数组列表,还有一个返回字符串的 JTextField。我想知道如何只允许输入字符?或者也许我如何只允许传递字符串的第一个字母? 最佳答案 所以您只想允许输入某些字符,即由ArrayList
我正在做这个作业,制作一个解决数独的程序。我有一个带有 SudokuTextBox 网格扩展 JFormattedTextField 的面板。我有一个 MaskFormatter,因此每个文本框只接受
我正在尝试在 Beanshell 中创建一个简单的对话框 - 它应该读取三个可编辑文本字段的内容,并在按下按钮时相应地执行一个简单的任务。我完全被一个错误所困扰,我无法阅读某些字段中的文本。 代码如下
我有一个用于“名称”字段的 jFormattedTextFiled。我必须限制字段只能输入 25 个字符。如果输入更多,则必须显示一些消息...对于消息我可以使用 JOptionpane.. 我该怎么
我有一个正在使用代码初始化的 JFormattedTextField JFormattedTextField f = new JFormattedTextField(createFormatter()
假设JFormattedTextField已启用并包含格式化程序,有没有办法使其只读?使用JTextField,我们只需要提供一个自定义文档并在那里进行所有控制,但是使用JFormattedTextF
我需要一个限制为小数点后 3 位的 JTextField。经过搜索,我发现了 JFormattedTextField,它看起来很棒。现在的代码是: try { double aux = 25.
我的 GUI 程序中有以下 JFormattedTextField。 DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); JFormattedTex
如何编写 JFormattedTextField 代码以接受不带小数的货币格式? 我尝试到处寻找答案。具体来说,是 Oracle、Google 和 Code Ranch。 我的问题:如何对格式化文本字
我在这里遇到麻烦了,我正在尝试创建一个创建 JFormattedTextFields 的类,它可以工作,但我需要获取它的值,那就是我得到 NullPointerExeption 的时候,这是我的代码:
我正在使用 GUI 制作一个小型数独游戏,并为 JFormattedTextFields 使用 MaskFormatter: formatter = new MaskFormatter(s); f
我一直在学习更多与 Java GUI 相关的知识。但是,我遇到了一个问题,不确定如何解决。 我有一部分程序(如下所示,但不相关的代码已被删除),除了 JFormattedTextField 变量 (s
由于有人错误地将我的另一个问题( NumberFormat parse not strict enough )标记为重复,并且尽管我指出它是不同的但没有删除重复的标签,所以我将再次发布该问题以及我的解
我是一名优秀的程序员,十分优秀!