【发布时间】:2021-08-29 08:15:52
【问题描述】:
我有一个JTable,我根据特定的列对其进行排序。然后我根据特定条件为表格单元格着色..问题是当表格被排序时,彩色单元格的位置仍然在同一位置。
代码
secondary_table=new JTable(table_model);
TableRowSorter<TableModel> sorter = new TableRowSorter<>(secondary_table.getModel());
secondary_table.setRowSorter(sorter);
ArrayList<RowSorter.SortKey> sortKeys = new ArrayList<>();
int columnIndexToSort = 3;
sortKeys.add(new RowSorter.SortKey(columnIndexToSort, SortOrder.ASCENDING));
sorter.setSortKeys(sortKeys);
sorter.sort();
secondary_table=new JTable(table_model){
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
Component comp = super.prepareRenderer(renderer, row, col);
Object value = getModel().getValueAt(row, col);
if (value.equals("غائب")) {
comp.setBackground(Color.red);
comp.setForeground(Color.white);
} else if (value.equals("دوام كامل")) {
comp.setBackground(Color.green);
comp.setForeground(Color.black);
} else if (value.equals("دوام جزئي دخول فقط") || value.equals("دوام جزئي خروج فقط") ) {
comp.setBackground(Color.yellow);
comp.setForeground(Color.black);
}
else {
comp.setBackground(Color.white);
comp.setForeground(Color.black);
}
return comp;
}
};
JScrollPane scrollPane1= new JScrollPane();
JFrame frame1=new JFrame(employee_name);
JPanel pp=new JPanel();
frame1.add(pp);
frame1.setVisible(true);
frame1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
frame1.getContentPane().add(new JScrollPane(scrollPane1.add(secondary_table)), "Center");
frame1.pack();```
【问题讨论】:
-
为了尽快获得更好的帮助:1)仔细选择标签(这缺少两个重要的标签)。 2) (Edit to) 添加minimal reproducible example。