java - DatePickerCellEditor() 有什么问题?

标签 java swing datepicker jtable tablecelleditor

我在 JTable 列中使用 DatePickerCellEditor。
现在,当我想获取值并将其转换为日期时,这部分会出现一些异常:
日期日期 = 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(),然后使用字符串表示创建新的日期是没有意义的。而是将对象转换为 java.util.Date

Date date = (Date) table.getValueAt(0, 1);

尽管您可能希望在使用此类对象之前先进行 null 检查。

关于java - DatePickerCellEditor() 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50667134/

相关文章:

javascript - 设置日期选择器开始日期 jQuery

android - 时间/日期选择器无法识别字符串

Java - 如何使用 OverlayLayout LayoutManager 将 Canvas 放在彼此之上?

java - 在 Mule 应用程序中使用参数

java - 运行 Apache Camel 时出错

java - 将对象列表转换为接口(interface)列表时出错

java - 在新游戏中清除我的 JFrame 和 JPanel

java - 我可以在一个类中使用多个 ActionListener 吗?

JAVA Swing GridLayout 无法正常工作