JTable
検証に基づいてセルを強調表示しています。状況によっては、他の列の値を取得する必要があります。たとえば、column2
USA がある場合は、column3
数値のみにする必要があります。別の例として、col2
が「USA」で col4
数値の場合、col5
3 文字のみにする必要があります。誰かがこれを行う方法を提案できますか?
以下のフラグメントには、col3
国名が含まれています。 col4
にcol5
依存しcol3
ます。case 3
とにいるときcase 4
、 の値を確認できませんcase 2
。たとえば、 のようにしif (col3.value == "USA")
ます。
[code]
tcol = editorTable.getColumnModel().getColumn(0);
tcol.setCellRenderer(new CustomTableCellRenderer());
tcol = editorTable.getColumnModel().getColumn(1);
tcol.setCellRenderer(new CustomTableCellRenderer());
tcol = editorTable.getColumnModel().getColumn(2);
tcol.setCellRenderer(new CustomTableCellRenderer());
public class CustomTableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent (JTable table, Object
value,boolean isSelected, boolean hasFocus, int row, int col){
Component cell = super.getTableCellRendererComponent(table, value,
isSelected,hasFocus, row, col);
if (value instanceof String) {
String str = (String) value;
switch (col) {
case 0:
col1(str, cell);
break;
case 1:
col2(str, cell);
break;
case 2:
col3(str, cell);
break;
}
}
return cell;
}
private void col1(String str, Component cell) {
if(!str.matches("[0-9a-zA-z]")){
cell.setBackground(Color.RED);
} else {
cell.setBackground(Color.GREEN);
}
}
private void col2(String str, Component cell) {
if(!str.matches("[A-Z]{3}")){
cell.setBackground(Color.RED);
} else {
cell.setBackground(Color.GREEN);
}
}
[/code]