マウスやキーボードに関係なく、セルが選択されるたびにセルの境界線を変更したい。ネット上でsmthを見つけるのは難しいです。ListSelectionListener を使用しようとしましたが、これは機能しません。
セルの境界線を変更する良い方法を知っている場合は、返信してください。どんなアイデアでも歓迎します。
ありがとうございました!
マウスやキーボードに関係なく、セルが選択されるたびにセルの境界線を変更したい。ネット上でsmthを見つけるのは難しいです。ListSelectionListener を使用しようとしましたが、これは機能しません。
セルの境界線を変更する良い方法を知っている場合は、返信してください。どんなアイデアでも歓迎します。
ありがとうございました!
カスタマイズされた TableCellRenderer を使用して、セルが選択されたときに別のことを行います。
http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#renderer
上記の例のコードを見ると、isSelected
ブール値パラメーターをどのように調べる必要があるかがわかります。
public Component getTableCellRendererComponent(
JTable table, Object color,
boolean isSelected, boolean hasFocus,
int row, int column) {
Color newColor = (Color)color;
setBackground(newColor);
if (isBordered) {
if (isSelected) {
...
//selectedBorder is a solid border in the color
//table.getSelectionBackground().
setBorder(selectedBorder);
} else {
...
//unselectedBorder is a solid border in the color
//table.getBackground().
setBorder(unselectedBorder);
}
}
ただし、実装では、最初DefaultTableCellRenderer
のバージョンの super() を拡張して呼び出しgetTableCellRendererComponent
、セルの色を変更するだけです。
これはデフォルトの動作です。Table.focusCellHighlightBorder
セルの境界線は、テーブルのプロパティに基づいて設定されます。したがって、UIManager を使用してデフォルトの Border を変更できます。詳細については、 UIManager のデフォルトを参照してください。
何らかの理由でこれが要件を満たしていない場合は、テーブル内のすべてのデータ型に対してカスタム レンダラーを作成する代わりに、1 か所でこれを実行できるテーブル行レンダリングをチェックしてください。