2016-03-11 2 views
1

У меня есть столбцы JTable 6, Column 1 и Column 2 имеют JDateChooserCellEditor(), я получаю следующие значения, такие как 11 марта 2016,12 марта 2016 года. Но я хочу форматировать JDateChooserCellEditor() для показать что-то вроде этого 11 марта 2016 г. HH: mm и 12 Mar, 2016 HH: mm.And моя третья ячейка должна дать результат разницы во времени.24 hrs.my JTable выглядит как this.pls см. изображение и код.Формат JTable Cell

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()); 
+0

на основе исходного кода для ' com.toedter.calendar.JDateChooserCellEditor' Я бы предположил, что они вас не хотят, поскольку 'JDateChooser' является' private' d не предоставляет никаких других «реальных» методов для доступа к нему. Вы можете вызвать его 'getTableCellEditorComponent' и передать его в JDateChooser, но это кажется ... уродливым для меня. – MadProgrammer

ответ

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"); 

Может быть что изменяет только рендер, а не редактор. Я не знаю, как никогда не использовал этот класс.

+0

Это, вероятно, так, но ['JDateChooserCellEditor'] (http://grepcode.com/file/repo1.maven.org/maven2/com.luuuis/jcalendar-tz/1.3.3-3/com/toedter/calendar/ JDateChooserCellEditor.java) не обеспечивает прямой доступ к компоненту, поэтому мы остаемся с использованием рефлексии (: P), вызывая «getTableCellEditorComponent» и выдавая результат (: P) или в основном делая свой собственный ... Я действительно 't нравится, что API: P – MadProgrammer

+0

вы можете объяснить мне дальше, как реализовать в коде? или другое решение для форматирования следующей ячейки до 00:00, как это? – akathir79

+0

@ akathir79, его одна строка кода. Я не знаю, делает ли он то, что вы хотите, так как я никогда раньше не использовал этот класс. Это зависит от вас, чтобы попробовать и посмотреть, что произойдет. – camickr

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()); 

 Смежные вопросы

  • Нет связанных вопросов^_^