جافا-تغيير جتابل العارض لكل فئة
-
16-09-2020 - |
سؤال
كنت آمل أن يتمكن شخص ما من شرح شيء لي لأنني وجدت الحل الخاص بي ، لكنني لا أفهم سبب نجاحه.أردت تعيين العارض الافتراضي حسب نوع الفئة إلى جدول كامل ، دون معرفة عند الإنشاء حيث ستكون الكائنات فيه.
كنت قد أعلنت جتابل وتعيين العارض الافتراضي إلى أن من بلدي ، ل 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;
لذلك ، ما لم تتجاوزه ، سيتم دائما التعامل مع كائنات العمود ككائن.هذا ليس شيئا سيتعامل معه النموذج تلقائيا.لديك فقط لتجاوز جيتكولومنكلاس ، ليس هناك طريقة حول ذلك.