سؤال

كنت آمل أن يتمكن شخص ما من شرح شيء لي لأنني وجدت الحل الخاص بي ، لكنني لا أفهم سبب نجاحه.أردت تعيين العارض الافتراضي حسب نوع الفئة إلى جدول كامل ، دون معرفة عند الإنشاء حيث ستكون الكائنات فيه.

كنت قد أعلنت جتابل وتعيين العارض الافتراضي إلى أن من بلدي ، ل Calendar فئة بحيث أي Calendarالصورة من شأنه أن يعطي تمثيل هادف ، وليس مجرد toString() من أنفسهم.

JTable table = new JTable();
table.setDefaultRenderer(Calendar.class, new MyRenderer());

public class MyRenderer extends DefaultTableCellRenderer{
    public MyRenderer() { super(); }
    @Override
    public void setValue(Object value){
            setText(makeCalendarToDate((GregorianCalendar)value));
    }
}

لن ينجح هذا حتى أتغلب على الطريقة getColumnClass كما تم هنا

بحسب صن الوثائق, ، يبدو مثل getColumnClass يجب أن تفعل بالضبط ما تم تجاوزه في المثال الذي أعطيته أعلاه-لماذا يعمل عندما أتجاوز هذه الطريقة ولكن ليس عندما أترك تنفيذ المخزون?

الآن يمكنني ملء العمود مع Calendarالصورة في انتظار أنها تملأ الصف 0, وهو ما أردت, ولكن ما منعني من القيام بذلك في المقام الأول?

هل كانت مفيدة؟

المحلول

جتابل يحصل على فئة العمود من النموذج.الجواب يكمن في تنفيذ أبستراكتتابلموديل ، على افتراض أن هذا ما كنت قد تستند نموذج الجدول الخاص بك على.في أبستراكتتابلموديل جيتكولومنكلاس تم تنفيذها مثل هذا: return Object.class; لذلك ، ما لم تتجاوزه ، سيتم دائما التعامل مع كائنات العمود ككائن.هذا ليس شيئا سيتعامل معه النموذج تلقائيا.لديك فقط لتجاوز جيتكولومنكلاس ، ليس هناك طريقة حول ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top