First, you should really be checking ‘existing’ and reusing it if possible. Else every time you scroll it will create new containers and stuff… maybe even every time you select. It’s likely that extending DefaultCellRenderer doesn’t really help you here as you are overriding most of its existing behavior. For example, it seems like you could write your own CellRenderer that just uses CheckBox instead of Button and be done. No special container handling or anything.
As to the other, I’m not sure why it isn’t clickable. Any explanation I can come up with (like the Button is getting the click first) seems like if true then it would happen all the time and not just in your use-case.
Could you please explain this because I think I misinterpret it. Should we keep a reference to the Panel the #getView method returns? I’m using the CellRenderer interface a lot, and I am always createinga new instance in this method.