Zkuste to s přepsaným prepareRenderer()
metoda k zašednutí řádku na základě dat
Ukázkový kód:(k ověření použijte hodnotu prvního sloupce)
Object[] columnNames = { "A", "B", "C", "D" };
Object[][] data = {
{ "abc", new Double(850.503), 53, true },
{ "lmn", new Double(36.23254), 6, false },
{ "pqr", new Double(8.3), 7, false },
{ "xyz", new Double(246.0943), 23, true } };
JTable table = new JTable(data, columnNames) {
@Override
public java.awt.Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
java.awt.Component comp = super.prepareRenderer(renderer, row, col);
Object value = getModel().getValueAt(row, 0);
if (value.equals("lmn")) {
comp.setBackground(Color.lightGray);
} else {
comp.setBackground(Color.white);
}
return comp;
}
};
U tlačítek zkontrolujte hodnotu a nedělejte nic.
Jak získat hodnotu vybraného řádku?
if(table.getSelectedRow()!=-1){
int rowIndex=table.getSelectedRow();
Object value=table.getModel().getValueAt(rowIndex, 0);
if(value.equals("lmn")){
//do nothing
}else{
// perform desired operation
}
}