Какие у меня проблемы с DatePickerCellEditor ()? - PullRequest
0 голосов
/ 03 июня 2018

Я использую DatePickerCellEditor в столбцах JTable.
Теперь, когда я хочу получить значение и преобразовать его в дату, получим некоторые исключения в этой части:
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();
   }
}   

Пожалуйста, помогите мне.спасибо

1 Ответ

0 голосов
/ 03 июня 2018

Ваш 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(), а затем создание новой даты с представлением String не имеет смысла.Вместо этого приведите Объект к java.util.Date.

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

Хотя вы можете сначала выполнить проверку null перед использованием таких объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...