- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要一个接受 4 种格式的字段:整数
、浮点
、字符串
和日期
。当用户需要输入日期时,UI 将显示一个日期选择器。
因此,为了简化 UI 以拥有单个文本字段,我创建了一个 JXDatePicker
,其中 JFormattedTextfield
作为编辑器,并动态分配 JFormattedTextfield
的格式化工厂来处理 Integer
、Float
、String
和 Date
输入。以下是实现的代码片段:
public void setFormat(String format)
{
// requires integer format
if (IntegerAttribute.TYPE_NAME.equals(format)) {
setBoundFormatFactory(new DefaultFormatterFactory(new NumberFormatter(NumberFormat.getInstance())));
}
// requires float format
else if (FloatAttribute.TYPE_NAME.equals(format)) {
setBoundFormatFactory(new DefaultFormatterFactory(new NumberFormatter(new DecimalFormat(FLOAT_FORMAT))));
}
else if (DateAttribute.TYPE_NAME.equals(format)
|| DateTimeAttribute.TYPE_NAME.equals(format)
|| TimeAttribute.TYPE_NAME.equals(format)) {
// requires date format
setDateFormat(model.getDateFormat());
}
else {
// otherwise set to us string
setBoundFormatFactory(new DefaultFormatterFactory());
}
}
public void setDateFormat(String dateFormat)
{
setBoundFormatFactory(new DefaultFormatterFactory(new DateFormatter(new SimpleDateFormat(dateFormat))));
}
private void setBoundFormatFactory(DefaultFormatterFactory factory)
{
m_formattedTextfield.setFormatterFactory(factory);
}
该实现适用于字符串和日期格式,但是对于整数和 float ,JXDatePicker 似乎试图将其转换为日期数据类型,因此会导致类转换异常:
java.lang.ClassCastException: java.lang.Long cannot be cast to java.util.Date
at org.jdesktop.swingx.plaf.basic.BasicDatePickerUI$Handler.editorPropertyChange(BasicDatePickerUI.java:1359)
at org.jdesktop.swingx.plaf.basic.BasicDatePickerUI$Handler.propertyChange(BasicDatePickerUI.java:1336)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
at java.awt.Component.firePropertyChange(Component.java:8163)
at javax.swing.JFormattedTextField.setValue(JFormattedTextField.java:782)
at javax.swing.JFormattedTextField.commitEdit(JFormattedTextField.java:513)
当字段为数字格式时,是否有办法阻止日期选择器尝试将值转换为日期?或者还有其他解决办法吗?
最佳答案
从未使用过JXDatePicker
(我认为仅支持通过DateFormat或SimpleDateFormat格式化日期值
,必须同步两个格式化程序),
您可以将 JSpinner
与 SpinnerDateModel
一起使用,而不是 JFormattedTextField
也许看看JCalendar by Kai Toedter ,并使用代码源
关于java - JXDatePicker 中的动态 JFormattedTextFields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12672606/
我想要一个日期选择器在我的 jframe 中。我正在使用 SwingX 的 JXDatePicker,但我无法找出它是如何工作的,日期选择器没有显示。 private void jButton
修改问题如何让JXDatePicker使用指定语言? 最佳答案 不幸的是,JXDatePicker 依赖于旧的 Java 日期和时间类,包括 Date 和 DateFormat。不幸的是,它们设计得很
我想用自定义日期初始化 JXDatepicker。目前我正在尝试这个: Date date1= new Date(2006-01-01); Date date2 = new Da
我有一个 swing 表单,其中包含 jXDatePicker 来捕获日期。如果未在 jXDatePicker 中选择日期,则尝试将日期插入数据库时会引发错误。以下是我在 Netbeans 中遇到
我在我的 Swing 应用程序中使用 JXDatePicker,并使用以下代码将日期值设置为 SQL Server 表 Date date = jDatePicker1.getDate();
我正在尝试扩展 JXDatePicker,以便它在获得焦点时打开。搜索了我理解的提示,但没有成功。有没有一种优雅的方式来做到这一点? 最佳答案 令人惊讶的是,这真的不可能:-( 这一次,JXDateP
我收到这样的类型错误:- DatePickerExample.java:5: error: package org.jdesktop.swingx does not exist import org.
我正在做一个连接到mysql数据库的系统(java应用程序)。我使用 JXdatepicker。 我需要禁用已记录在数据库中的特定日期。 我环顾四周,看到了这个: Date[] dates = {ne
是否可以从 JXDatePicker 组件中不仅获取日期,还获取日期和时间? 我已将小部件配置为显示此格式: SimpleDateFormat dateFormatter = new SimpleDa
我在 JFrame 中使用了 JXDATEPICKER。但是,日期以以下形式显示:2014年10月15日 我希望日期按以下格式显示:yyyy-mm-dd谢谢。 最佳答案 您可以像这样使用 Simple
在netbeans上,一切都很好,当我构建项目并从dist文件夹中执行.jar时,也很好。但是当我移动 .jar 并执行时; cmd 给了我这个 它指向 JXDatePicker 的声明我在库项目中有
我想要一个监听器,当 JXDatePickers 编辑器单元格获得焦点时自动选择该条目。 DatePicker.getEditor().selectAll(); 不起作用。所以我尝试了这个: Date
我需要一个接受 4 种格式的字段:整数、浮点、字符串 和日期。当用户需要输入日期时,UI 将显示一个日期选择器。 因此,为了简化 UI 以拥有单个文本字段,我创建了一个 JXDatePicker,其中
我想个性化 JXDatePicker。更具体地说,我想在自己的位置上创建自己的操作按钮。我试图提取包含的 JButton,但是当我尝试将它添加到任何 JPanel 时,它只会添加空白空间。 JXDat
我正在使用 SwingX JXDatePicker,但我不知道如何提供下一年/上一年的按钮(因为默认情况下它只提供下一个/上个月的按钮)。 此外,SwingX 似乎不再维护:我应该使用更新的组件作为日
我想在可在触摸屏上运行的应用程序中使用这个 JXDatePicker 组件。因为默认组件很小,所有的日期和按钮都很难用一个坏的触摸屏来点击我想让它们更大。到目前为止,我成功地使结果文本字段更大(显示所
我正在编写的程序允许用户单击 JXDatePicker 上的日期来设置任务完成的日期。我想在 JXDatePicker 中禁用 future 日期的选择,因为在我的程序中选择 future 日期是无效
我需要使用 JXDatePicker 使我的 JTable 中的日期单元格可编辑。我想我需要实现 TableCellEditor,但我不敢自己解决它。有没有人有可以帮助我的链接或一段快速代码? 最佳答
有谁知道是否可以使用 swingx 的 jxdatepicker 选择多天?我使用的是 swingx 版本 1.6.1(看起来是最新的)。 最佳答案 看起来 JXMonthView 类中有已弃用的方法
当用户按下 Enter 键时,我需要将焦点转移到另一个元素上,所以我成功地通过这种方式在大多数元素上注册了 KeyStroke: this.getInputMap( ).put( KeyStroke
我是一名优秀的程序员,十分优秀!