単純に を拡張してDefaultTableCellRenderer
、UI 側から、セルが「フォーカスされていない」ふりをすることができます。
次のレンダラーを使用して境界線を削除しました。
private static class BorderLessTableCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
public Component getTableCellRendererComponent(
final JTable table,
final Object value,
final boolean isSelected,
final boolean hasFocus,
final int row,
final int col) {
final boolean showFocusedCellBorder = false; // change this to see the behavior change
final Component c = super.getTableCellRendererComponent(
table,
value,
isSelected,
showFocusedCellBorder && hasFocus, // shall obviously always evaluate to false in this example
row,
col
);
return c;
}
}
次のように JTable に設定できます。
table.setDefaultRenderer( Object.class, new BorderLessTableCellRenderer() );
または、文字列の場合:
table.setDefaultRenderer( String.class, new BorderLessTableCellRenderer() );
単純に元のレンダラーを再利用し、フォーカスされた/選択されたセルがそうではないふりをしているという点で、これは少しハックですが、開始する必要があります。