java - Replace checkbox with String for Booleans in DefaultTableCellRenderer -


i've been trying learn jtable renderers, , have nailed down behavior i'm looking for, save last part. want remove checkbox jtable renders default booleans , render simple string instead, , can't wrap head around problem here.

since changes renderer minor (only basic string operations, plus foreground color booleans), want extend defaulttablecellrenderer instead of implementing tablecellrenderer , going scratch. i have been using same renderer cell types since seemed silly create new class each 1 of simple operations. here's relevant code:

public class mytablerenderer extends defaulttablecellrenderer {      public mytablerenderer() {         super();     }      @override     public void setvalue(object value) {         if(value instanceof boolean) {             boolean v = (boolean) value;             setforeground( v ? color.green : color.red );             settext( v ? "alive" : "dead" );         }     /*  else if(value instanceof //other types, , on , forth */      }  } 

i'm applying renderer table such:

jtable mytable = new jtable(mytablemodel); mytable.setdefaultrenderer(object.class, new mytablerenderer()); 

i've ensured table model responds getcolumnclass() properly, , renderer behaves should other types of value, boolean acting up. no matter settext in event of boolean value, text replaced default checkbox. i understand boolean values use separate renderer default, shouldn't calling setdefaultrenderer on object.class override default for boolean.class?

mytable.setdefaultrenderer(object.class, new mytablerenderer()); 

you creating boolean renderer, not object renderer. should using:

mytable.setdefaultrenderer(boolean.class, new mytablerenderer()); 

but shouldn't calling setdefaultrenderer on object.class override default boolean.class?

no. object renderer used default renderer if there no renderer specified specific class. since there default boolean renderer use renderer, unless replace renderer 1 of own.

i have been using same renderer cell types since seemed silly create new class each 1 of simple operations

without knowing doing, in general, should creating custom renderers. time see if/else logic in code know have design problem. use features provided jtable , create renderers each class of data instead of using if/else.

if think have lot of common rendering logic create renderer common rendering code. create multiple renderers extend base renderer each class of data want support.

i'm trying use same renderer cell types,

well problem stating above.

if have reason doing need add line of code suggest above classes of data want share same renderer. @ least need classes have default renderers.


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -