代码之家  ›  专栏  ›  技术社区  ›  HansDampf

JavaSwing:如何添加一个显示日期的CyrReReDelver?

  •  0
  • HansDampf  · 技术社区  · 14 年前

    我有一张桌子:

    public class AppointmentTableModel extends AbstractTableModel {
        private int columns;
        private int rows;
        ArrayList<Appointment> appointments;...
    

    所以表的每一行都包含一个约会。

    public class Appointment {
    
        private Date date;
        private Sample sample;
        private String comment;
        private ArrayList<Action> history;
    
        public Appointment(Date date, Sample sample, String comment) {
            this.date = date;
            this.sample = sample;
            this.comment = comment;
            this.history = new ArrayList<Action>();
        }
    
        public Object getByColumn(int columnIndex) {
            switch (columnIndex) {
            case 0: return date;//Date: dd:mm:yyyy
    
            case 1: return date;//Time mm:hh
    
            case 2: return sample;//sample.getID() int (sampleID)
    
            case 3: return sample;//sample.getNumber string (telephone number)
    
            case 4: return sample;//sample.getName string (name of the person)
    
            case 5: return history;//newst element in history as a string
    
            case 6: return comment;//comment as string
    
    
            }
            return null;
    

    我在评论中补充了这句话的意思。我如何创建cellrenderer来显示它。

       table.getColumnModel().getColumn(1).setCellRenderer(new DateRenderer());
    

    我还想添加整行,以便在日期晚于当前日期时用红色绘制。 然后是另一列,其中包含一个jbutton,以打开另一个屏幕,并将相应的约会作为参数。

    1 回复  |  直到 14 年前
        1
  •  0
  •   camickr    14 年前

    Table Format Renderers 用于呈现日期。

    Table Row Rendering 用于根据单元格的值亮显行。

    编辑:

    这是我如何在博客条目中创建表的数据:

    String[] columnNames = {"Date/Time", "Time", "Percent", "Currency"};
    Object[][] data =
    {
        {new Date(108, 0, 10), new Date(), new Double(.10), new Double(00075.25) },
        {new Date(108, 1, 15), new Date(), new Double(.50), new Double(01275.75) },
        {new Date(108, 2, 20), new Date(), new Double(.99), new Double(-4275.00) }
    };
    

    从博客图像中可以看到,在模型中存储日期对象时,该对象的格式与指定的日期或时间正确。

    忘记你真正的程序,创建一个 SSCCE 用上面的数据,向自己证明这个概念是有效的。然后找出你真正的代码做错了什么。