Java 如何将CellRenderer用于GregoriaCalendar?

Java 如何将CellRenderer用于GregoriaCalendar?,java,swing,jtable,Java,Swing,Jtable,所以我一直在尝试使用教程中的示例,并对其进行更改,使其适合我的程序。 getColumnValue方法返回包含应该显示的信息的对象。这是一种方法,还是应该返回要显示的实际字符串。我想不是因为那样我会把演示文稿和数据混在一起,这是我试图避免的 public class IssueTableFormat implements TableFormat<Appointment> { public int getColumnCount() { return 6;

所以我一直在尝试使用教程中的示例,并对其进行更改,使其适合我的程序。 getColumnValue方法返回包含应该显示的信息的对象。这是一种方法,还是应该返回要显示的实际字符串。我想不是因为那样我会把演示文稿和数据混在一起,这是我试图避免的

public class IssueTableFormat implements TableFormat<Appointment> {

    public int getColumnCount() {
        return 6;
    }

    public String getColumnName(int column) {
        if(column == 0)      return "Datum";
        else if(column == 1) return "Uhrzeit";
        else if(column == 2) return "Nummer";
        else if(column == 3) return "Name";
        else if(column == 4) return "letzte Aktion";
        else if(column == 5) return "Kommentar";

        throw new IllegalStateException();
    }

    public Object getColumnValue(Appointment issue, int column) {

        if(column == 0)      return issue.getDate();
        else if(column == 1) return issue.getDate();
        else if(column == 2) return issue.getSample();
        else if(column == 3) return issue.getSample();
        else if(column == 4) return issue.getHistory();
        else if(column == 5) return issue.getComment();

        throw new IllegalStateException();
    }
}

但是手机没有显示任何东西,这有什么问题吗?

对我来说,你的手机看起来真的很尴尬

if(column == 0)      return issue.getDate();
else if(column == 1) return issue.getDate();

但是我想让他们展示不同的东西。我会修改模型,使它对于这两个不同的单元格有两个不同的变量,或者它从
getColumnValue

返回的值最少。在我看来,你这样做真的很尴尬

if(column == 0)      return issue.getDate();
else if(column == 1) return issue.getDate();

但是我想让他们展示不同的东西。我会更改模型,使其对于这两个不同的单元格具有两个不同的变量,或者使其从渲染器的
setValue()
方法返回的值与它计算的值基本相同。我想你想要这个:

public void setValue(Object value) {
   GregorianCalendar g =(GregorianCalendar) value;
   super.setValue(g.get(GregorianCalendar.HOUR));
}

渲染器的
setValue()
方法实际上不会对其计算的值执行任何操作。我想你想要这个:

public void setValue(Object value) {
   GregorianCalendar g =(GregorianCalendar) value;
   super.setValue(g.get(GregorianCalendar.HOUR));
}

我已经给出了如何使用自定义渲染器渲染日期对象的工作代码,那么为什么在日期工作正常的情况下使用日历会有很多问题呢


日历具有返回日历日期的方法。因此,这是另一个渲染器的额外代码行。也就是说,您可以从日历中获取日期,然后可以按照其他代码的工作方式对其进行格式化。

我已经为您提供了有关如何使用自定义渲染器渲染日期对象的工作代码,那么为什么在日期正常工作的情况下,您会对如何使用日历产生多个问题呢


日历具有返回日历日期的方法。因此,这是另一个渲染器的额外代码行。也就是说,您可以从日历中获取日期,然后您可以按照其他代码的工作方式对其进行格式化。

好的,但是当我有方法返回应该显示的实际值时,我被告知不要将数据和演示混合在一起。好的,但当我有方法返回应该显示的实际值时,我被告知不要混合数据和表示。