DatePickerCellEditor() 有什么问题?
What is my problems with 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 是没有意义的。而是将对象转换为 java.util.Date
.
Date date = (Date) table.getValueAt(0, 1);
尽管您可能希望在使用此类对象之前先进行 null
检查。
我在 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 是没有意义的。而是将对象转换为 java.util.Date
.
Date date = (Date) table.getValueAt(0, 1);
尽管您可能希望在使用此类对象之前先进行 null
检查。