java - JTable change Column Font -


helo, i've looked answer in many places haven't got solution, can me this?

i'm making table want make first column higher font size.

for example in column 0 want font size of 30 , on columns 1-3 y want font size of 13.

here's code

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import javax.swing.jframe; import javax.swing.jscrollpane; import javax.swing.jtable; import javax.swing.table.defaulttablemodel; import javax.swing.table.*;  public class kanji_list extends jframe {  kanji_list(){      jtable table = new jtable();     jscrollpane scroll = new jscrollpane();     image icon = toolkit.getdefaulttoolkit().getimage("jlpt.jpg");     imageicon ima = new imageicon("jlpt.jpg");      defaulttablemodel model = new defaulttablemodel(get_data(), get_header());       table = new jtable(model){         public boolean iscelleditable(int rowindex, int vcolindex){             return false;         }     };     jtableheader th = table.gettableheader();       tablecolumnmodel tcm = th.getcolumnmodel();     tablecolumn column = null;     table.setfont(new font("microsoft jhenghei", font.bold, 13));     (int = 0; < 4; i++) {         column = table.getcolumnmodel().getcolumn(i);         defaulttablecellrenderer tcr = new defaulttablecellrenderer();         tcr.sethorizontalalignment(swingconstants.center);         column.setcellrenderer(tcr);         if (i==0) {             column.setpreferredwidth(50);         }         else{             if(i==1){                 column.setpreferredwidth(175);             }             else{                 if(i==2){                     column.setpreferredwidth(200);                 }                 else{                     column.setpreferredwidth(875);                 }             }         }     }            table.setrowheight(table.getrowheight()+30);     table.setmodel(model);     scroll.add(table);     this.add(scroll);     this.settitle("katakana");     this.setsize(1350, 700);     this.seticonimage(icon);     this.setvisible(true);     this.setlocationrelativeto(null);      scroll.setviewportview(table); } object [][]get_data(){     object data[][] = new object[][]{         {"\u4e00", "uno, 1", "ichi, itsu", "hito-, hitotsu"},          {"\u4e8c", "dos, 2", "ni, ji", "futa, futatsu, futatabi"},          {"\u4e09", "tres, 3", "san, jou", "mi, mitsu, mittsu"},         {"\u99c5", "estaciĆ³n", "eki", ""}     };     return data; } string []get_header(){     string header [] = new string[]{"kanji", "significado", "lectura on", "lectura kun"};     return header; } 

}

this japanese learning system, , kanjis on unicode on 1st column aren't visible @ 13 size font, if make table on higher size, other columns bigger , doesn't looks fine.

i guess i've explained problem.

i've tried many different ideas, don't result.

in core jtable need custom renderer sets font different table's font, f.i. in subclass of defaulttablecellrenderer. note setting font on defaulttablecellrenderer once after instantiation won't work because it's reset on each call gettablecellrenderercomponent.

jtable table = new jtable(new ancientswingteam()); // default renderer uses table's font, // set appropriate table.setfont(fonttouseforallcolumnsexceptfirst); // custom renderer uses special font defaulttablecellrenderer r = new defaulttablecellrenderer() {     font font = fonttouseforfirstcolumn;      @override     public component gettablecellrenderercomponent(jtable table,             object value, boolean isselected, boolean hasfocus,             int row, int column) {         super.gettablecellrenderercomponent(table, value, isselected, hasfocus,                 row, column);         setfont(font);         return this;     }  }; // doesn't work because default renderer's font reset // table's font // r.setfont(font); // set custom renderer first column table.getcolumnmodel().getcolumn(0).setcellrenderer(r); 

an alternative renderer decoration approach, supported in swingx project (biased me can't resist :-) above two-liner (assuming table of type jxtable):

highlighter hl = new fonthighlighter(font); table.getcolumnext(0).sethighlighter(hl); 

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -