0

次のようなjTableがあります:

ここに画像の説明を入力

の値がQuantitéの値よりも小さい場合Min seuil de suantité、行の色をピンクに変更します。

プログラムのロードではすべて正常に動作しますが、テーブルをクリックするなどのイベントを実行すると、 の値が のQuantité値以上であっても、すべての行の色が変更されMin seuil de quantitéます。

ここに画像の説明を入力

これは私のセルレンダリングです:

public class CustomTableCellRenderer extends DefaultTableCellRenderer {
    public Component getTableCellRendererComponent(JTable table,
            Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
        Component cell = super.getTableCellRendererComponent(
                table, obj, isSelected, hasFocus, row, column);

        setHorizontalAlignment(SwingConstants.LEFT);

        int selectedRow = table.convertRowIndexToModel(row);
        if (table.getModel().getValueAt(selectedRow, 3) != null && table.getModel().getValueAt(selectedRow, 4) != null) {
            int quantite = Integer.parseInt(table.getModel().getValueAt(selectedRow, 3).toString());
            int minQuantite = Integer.parseInt(table.getModel().getValueAt(selectedRow, 4).toString());
            if (quantite < minQuantite) {
                if (isSelected) {
                    cell.setBackground(new Color(255, 138, 239));
                } else {
                    cell.setBackground(new Color(252, 189, 252));
                }
            }
        }
        return cell;
    }
}

これは、テーブルへのセルのレンダリングに影響を与えるコードです:

private void cellRendering(){
        for (int i = 0; i < masterTable.getColumnCount(); i++) {
            tcol = masterTable.getColumnModel().getColumn(i);
            tcol.setCellRenderer(new CustomTableCellRenderer());
        }
    }
4

1 に答える 1

1

レンダラーは、最後に適用されたインクを記憶するゴム印です。レンダラーが呼び出されるたびに、目的の色を設定してください。詳細については、こちらをご覧ください

于 2013-06-03T09:13:30.050 に答える