Sum*_*udu 4 java swing jtable datepicker swingx
我正在使用JTable.我有一个Date列,当我点击一个单元格时,我需要在其中显示一个JXDatePicker,以便我可以从中选择一个日期.
有人能告诉我怎么做吗?
谢谢!等待一个答复..
ten*_*ica 10
你可能应该使用DatePickerCellEditor
,这是一个CellEditor
使用JXDatePicker
as编辑器组件.例如:
TableColumn dateColumn = table.getColumnModel().getColumn(columnIndex);
dateColumn.setCellEditor(new DatePickerCellEditor());
Run Code Online (Sandbox Code Playgroud)
这是一个演示表:
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.TableColumn;
import org.jdesktop.swingx.table.DatePickerCellEditor;
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() } },
new Object[] { "Id", "Time" });
TableColumn dateColumn = table.getColumnModel().getColumn(1);
dateColumn.setCellEditor(new DatePickerCellEditor());
JScrollPane scrollPane = new JScrollPane(table);
frame.add(scrollPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
正如我对Max'正确答案的评论中所提到的:
JXTable(同一个普通的JTable)确实格式化默认的日期值,使用格式由作为返回DateFormat.getInstance()
.如果格式化似乎不起作用,那通常是tableModel的不完整实现:仅当columnClass返回该特定类型时才使用特定类型的默认渲染器
// in your TableModel, implement getColumnClass
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == myDateColumnIndex) {
return Date.class;
}
...
}
Run Code Online (Sandbox Code Playgroud)
要安装具有自定义格式的日期渲染器,请根据需要使用FormatStringValue实例化DefaultTableRenderer并告诉表使用它(每列适用于任何columnClass或per-table,适用于返回Date类的列)
StringValue sv = new FormatStringValue(new SimpleDateForma("dd-MMMM-yyyy"));
TableCellRenderer r = new DefaultTableRenderer(sv);
// either per-column
table.getColumn(dateColumnIndex).setCellRenderer(r);
// or per-table
table.setDefaultRenderer(Date.class, r);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4688 次 |
最近记录: |