0

マウスやキーボードに関係なく、セルが選択されるたびにセルの境界線を変更したい。ネット上でsmthを見つけるのは難しいです。ListSelectionListener を使用しようとしましたが、これは機能しません。

セルの境界線を変更する良い方法を知っている場合は、返信してください。どんなアイデアでも歓迎します。

ありがとうございました!

4

2 に答える 2

3

カスタマイズされた 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、セルの色を変更するだけです。

于 2013-11-08T16:11:28.520 に答える
2

これはデフォルトの動作です。Table.focusCellHighlightBorderセルの境界線は、テーブルのプロパティに基づいて設定されます。したがって、UIManager を使用してデフォルトの Border を変更できます。詳細については、 UIManager のデフォルトを参照してください。

何らかの理由でこれが要件を満たしていない場合は、テーブル内のすべてのデータ型に対してカスタム レンダラーを作成する代わりに、1 か所でこれを実行できるテーブル行レンダリングをチェックしてください。

于 2013-11-08T16:16:04.997 に答える