格式化JTable单元格

时间:2016-03-11 01:17:37

标签: java swing jtable tablecelleditor jdatechooser

我有一个JTable 6列,第1列和第2列单元格有JDateChooserCellEditor(),我得到以下值,如2016年3月11日,2016年3月12日。但我想格式化JDateChooserCellEditor()来显示类似的东西2016年3月11日HH:mm和2016年3月12日HH:mm。我的第三个细胞必须给出时间差异的结果.24小时.JTable看起来像这样。请看图像和代码。

image of table

  // column 1---
TableColumn col1=DailyTbl.getColumnModel().getColumn(1);
col1.setPreferredWidth(150);
DailyTbl.setDefaultEditor(java.util.Date.class, new JDateChooserCellEditor());

// Column 2------

TableColumn col1=DailyTbl.getColumnModel().getColumn(1);
col1.setPreferredWidth(150);
DailyTbl.setDefaultEditor(java.util.Date.class, new JDateChooserCellEditor()); 

2 个答案:

答案 0 :(得分:1)

根据我在此链接中找到的一些代码:http://grepcode.com/file/repo1.maven.org/maven2/com.luuuis/jcalendar-tz/1.3.3-3/com/toedter/calendar/JDateChooser.java

我发现了一条评论,建议您可以使用以下内容执行您想要的操作:

dateChooser.setDateFormatString("yyyy-MM-dd HH:mm");

也许只会更改渲染器,而不是编辑器。我不知道,因为我从未使用过这门课。

答案 1 :(得分:0)

找到格式化JDateChooserCellEditor()

的已解答答案
enter code here
public class JDateChooserCellEditor1 extends AbstractCellEditor implements
    TableCellEditor {

private static final long serialVersionUID = 917881575221755609L;

private JDateChooser dateChooser = new JDateChooser();

public Component getTableCellEditorComponent(JTable table, Object value,
        boolean isSelected, int row, int column) {

    Date date = null;
    if (value instanceof Date)
        date = (Date) value;

    dateChooser.setDate(date);
            dateChooser.setDateFormatString("yyyy-MM-dd HH:mm");
    return dateChooser;
}

public Object getCellEditorValue() {
    return dateChooser.getDate();
}
}

//和TableCellRender

    class DateRenderer implements TableCellRenderer
    {

@Override
     public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {

    JPanel c = new JPanel();
      //JTextField c=new JTextField();
    if (value instanceof Date)
    {


        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");

        c.add(new JLabel(dateFormat.format(value)));
        c.setOpaque(true);


    }

    return c;
}

}

//最终调用类

  TableColumn col1=DailydatasTbl.getColumnModel().getColumn(1);
  col1.setPreferredWidth(200);
  Table.setDefaultEditor(java.util.Date.class, new JDateChooserCellEditor1());
   Table.getColumnModel().getColumn(1).setCellRenderer(new  DateRenderer());