قم بتغيير لون بعض الصفوف ولكن ليس كلها في JTable
-
12-12-2019 - |
سؤال
لقد قمت بإنشاء فئة عارض خلايا مخصصة لتحقيق ذلك.
public class MatchTableCellRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent (JTable table,
Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
Component cell;
cell = super.getTableCellRendererComponent(
table, obj, isSelected, hasFocus, row, column);
if( ((String[]) ((MatchTableModel) table.getModel()).getRow(row)).length==7 ){
System.out.println(((String[]) ((MatchTableModel) table.getModel()).getRow(row))[0]+" "+((String[]) ((MatchTableModel) table.getModel()).getRow(row))[6]);
cell.setForeground(Color.green);
}
return cell;
}
}
وقمت بتعيين هذا العارض ليتم استخدامه بواسطة أعمدة الجدول الخاص بي:
tempColumn = table.getColumnModel().getColumn(0);
tempColumn.setCellEditor(new MacColumnEditor());
tempColumn.setCellRenderer(new MatchTableCellRenderer());
tempColumn = table.getColumnModel().getColumn(1);
tempColumn.setCellEditor(new IpColumnEditor());
tempColumn.setCellRenderer(new MatchTableCellRenderer());
tempColumn = table.getColumnModel().getColumn(2);
DefaultCellEditor dfEditor=new DefaultCellEditor(new JTextField());
dfEditor.setClickCountToStart(2);
tempColumn.setCellEditor(dfEditor);
tempColumn.setCellRenderer(new MatchTableCellRenderer());
أريد الصفوف التي تحتوي على سلسلة [] بطول = 7 باللون الأخضر والصفوف الأخرى باللون الافتراضي.لكن من المثير للاهتمام أن كل صفوفي أصبحت خضراء.لدي خط الطباعة كما ترون.تمت طباعته 4 مرات (يحتوي الجدول الخاص بي على 12 صفًا)، ولكن تم جعل جميع الصفوف باللون الأخضر، بدلاً من 4.ما الخطأ الذي افعله؟
المحلول
السبب هو ذاكرة اللون السمعة (TM) DefaultTableCeLreditor: عليك تعيين الألوان دائما ، بدلا من فرع واحد فقط. giveacodicetagpre.
يتم شرح التفاصيل الدقيقة في مؤشر الترابط الأخير
لا تنتمي إلى StackOverflow