【问题标题】:JTable sorting and renderingJTable排序和渲染
【发布时间】: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();```

【问题讨论】:

标签: java swing jtable


【解决方案1】:

一旦对表进行排序,我们需要依赖convertRowIndexToView(int) & convertRowIndexToModel(int) 等方法。

这在How to Use Tables: Sorting and Filtering的官方教程中有介绍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多