java - DatePickerCellEditor() 有什么问题?
问题描述
我在 JTable 列中使用 DatePickerCellEditor。
现在,当我想获得价值并将其转换为日期时,这部分会出现一些例外情况:
Date date = new Date(valueAt);
.
并得到这个异常:
java.lang.IllegalArgumentException
at java.util.Date.parse(Date.java:617)
at java.util.Date.<init>(Date.java:274)
这是我的代码。
public class DateColumnDemo {
private static void createAndShowGUI() {
JFrame frame = new JFrame("DateColumnDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = new JTable(new Object[][]{{"1", new Date()}, {"2", new
Date()}}, new Object[]{"Id", "Time"});
TableColumn dateColumn = table.getColumnModel().getColumn(1);
dateColumn.setCellEditor(new DatePickerCellEditor());
JPanel jp = new JPanel(new FlowLayout());
JScrollPane scrollPane = new JScrollPane(table);
JButton jb = new JButton("Button");
jb.addActionListener(e -> {
String valueAt = table.getValueAt(0, 1).toString();
try {
Date date = new Date(valueAt);
} catch (Exception ee) {
ee.printStackTrace();
}
System.out.println(table.getValueAt(0, 1));
System.out.println(table.getValueAt(1, 1));
});
jp.add(scrollPane);
jp.add(jb);
frame.add(jp);
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]) {
createAndShowGUI();
}
}
请帮我。谢谢
解决方案
您的 JTable 在第一列中包含 Date 对象:
JTable table = new JTable(new Object[][]{
{"1", new Date()},
{"2", new Date()}
}, new Object[]{"Id", "Time"});
所以这个:
String valueAt = table.getValueAt(0, 1).toString();
其次是
Date date = new Date(valueAt);
在哪里调用toString()
然后用字符串表示创建一个新的 Date 是没有意义的。而是将 Object 转换为java.util.Date
.
Date date = (Date) table.getValueAt(0, 1);
尽管您可能希望null
在使用此类对象之前先进行检查。
推荐阅读
- android - 使用 VolleyMultipart 请求在文件上传期间显示进度
- reactjs - 设置状态时如何将方法应用于字符串,反应钩子
- python-3.x - PyQt5让QDialog在允许用户输入之前等待进程完成
- sorting - DAX Related() 与 Power BI 中的多对多关系
- c# - 使用 .net 核心 json 模型绑定在无效 json 上引发 json 验证错误
- android - android内部的功能标志功能?
- html - HTML选取框需要等待其他完成才能开始滚动
- r - 在R中创建具有相同距离的随机数序列
- mysql - 哪里存在减慢查询
- reactjs - Codesandbox 无效的钩子