每当在Jtable中选择新单元格时,如何更改单元格的边框?

问题描述:

我想无论何时通过鼠标或键盘更改单元格的边框. 很难在网上找到水烟.我尝试使用ListSelectionListener,但这不起作用.

I want to change border of cell whenever it is selected regardless by mouse or by keyboard. It is hard to find smth on net. I tried to use ListSelectionListener but this doesn't work.

如果您知道更改单元格边界的一些好方法,请回复. 我欢迎任何想法.

If you know some good way to change cell's border, please, reply. I welcome any ideas.

谢谢!

在选定单元格时,使用自定义的TableCellRenderer可以做一些不同的事情.

Use a customized TableCellRenderer to do something different when the cell is selected.

http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#renderer

查看上面示例中的代码,您将看到需要如何查看isSelected布尔参数.

Looking at the code from the above example you can see how you would need to look at the isSelected boolean parameter.

 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并首先调用getTableCellRendererComponent的super()版本,然后更改单元格颜色即可.

However, in your implementation just extend DefaultTableCellRenderer and call super() version of getTableCellRendererComponent first and just change the cell color.