JTable CellEditor格式

时间:2015-09-21 17:23:34

标签: java mysql swing

我有一个充满mySQL数据库的JTable。 其中一列用mySQL格式填充日期(yyyy / MM / dd) 我使用单元格渲染器将te列上的日期显示为(dd / MM / yyyy)此类:

    static class DateRenderer extends DefaultTableCellRenderer {

    private Date dateValue;
    private SimpleDateFormat sdfNewValue = new SimpleDateFormat("dd-MM-yyyy");
    private String valueToString = "";

    @Override
    public void setValue(Object value) {
        if ((value != null)) {
            String stringFormat = value.toString();
            try {
                dateValue = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH).parse(stringFormat);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            valueToString = sdfNewValue.format(dateValue);
            value = valueToString;
            setHorizontalAlignment( SwingConstants.CENTER );
        }
        super.setValue(value);
    }
    }

我已经使用

将它设置到JTable上的正确列

table.getColumnModel()。getColumn(3).setCellRenderer(new DateRenderer());

我遇到的问题是单元格是可编辑的,一旦我双击该列中的单元格,日期再次显示为(yyyy / MM / dd)。

我尝试使用自定义类来使用此代码

显示单元格编辑
class MyEditor extends DefaultCellEditor {
      public MyEditor() {
        super(new JTextField());
      }

      public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
          int row, int column) {
        JTextField editor = (JTextField) super.getTableCellEditorComponent(table, value, isSelected,
            row, column);
        editor.setFont(font);
        String ndate=new String();

        if (dataModel.getColumnName(3)=="date" && column==3) {
            String s=(String) dataModel.getValueAt(row, column);
             SimpleDateFormat originalFormat = new SimpleDateFormat("yyyy-MM-dd");
             SimpleDateFormat targetFormat = new SimpleDateFormat("dd-MM-yyyy");
               try {
                 Date odate = originalFormat.parse(s);
                 ndate=(targetFormat.format(odate));

                } catch (ParseException ex) {

                   }
            value=ndate;

        }

        if (value != null) {
          editor.setText(value.toString());
          editor.setHorizontalAlignment(SwingConstants.CENTER);
        }
        return editor;
      }
    }

它工作得很完美,但我无法解决的唯一问题是在JTable上更改单元格时mySQL数据库正在更新,而mySQL没有以dd / mm / yyyy格式接收日期,所以我正在寻找一种方法编辑完成后,它会将日期传回日期为myy可接受的yyyy / mm / dd。

任何人都可以帮我解决这个问题吗?

问候。

0 个答案:

没有答案