重写DefaultTableCellRenderer的getTableCellRendererComponent导致JTable“无法”选择行(row)的原因

在Java编程中,自定义DefaultTableCellRenderer可能导致JTable无法明显显示行选择。实际上,行已被选中,只是由于渲染器设置不当,使得选择状态不明显。解决办法是在isSelected条件下为选中行的单元格应用特定渲染,以突出显示选中状态。
摘要由CSDN通过智能技术生成

实际上是选择了的,因为自定义的cell渲染导致看不出来row被选中。可以通过isSelected为选定行的全部或部分单元格设置特殊的渲染,以显示哪行被选中了。

protected void setDefaultRenderer(){
    setDefaultRenderer(Object.class, new DefaultTableCellRenderer(){

        //设置单元格内容居中
        public void setHorizontalAlignment(int alignment){
            super.setHorizontalAlignment(CENTER);
        }


        //设置单元格渲染
        @Override

        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            if (table == null) {
                return this;
            }

            Color bg;
            Color fg;
            
            if (column == 0) {    //设置第一列的颜色
                    bg = new Color(0xFFFFE0);
                    fg = Color.BLACK;
                } else if (column > 0 && column <= DataConstants.COLUMNS_2) {   //设置第一区域的颜色
                    //某些单元格的颜色
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值