トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

JTable

 セルを選択する

public void selectCell(int vrow, int vcol){
   table.getSelectionModel().setSelectionInterval(vrow,vrow);
   table.getColumnModel().getSelectionModel().setSelectionInterval(vcol,vcol); 
 }

 エンターキーで、次の列へ移動する

public void setEnterForNextColumn(boolean enable){
   String action = "";
   if (enable){
     action = "selectNextColumnCell";
   } else {
     action = "selectNextRowCell";
   }
   KeyStroke enterPress = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false);
   InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
   im.put(enterPress,action);
 }

 列の幅の調整

setAutoResizeModeでAUTO_RESIZE_SUBSEQUENT_COLUMNSを設定した場合、
各列に指定された列幅に対して、同じ幅を追加(削除)して幅を合わせる。
例えば、
・テーブル幅100
・列1幅:20
・列2幅:10
とした場合、幅100に合わせるために 100 - (20 + 10) = 70 を各列に割り振る。
結果、
・列1幅:20 + (70 / 2) = 55
・列2幅:10 + (70 / 2) = 45
となる。(みたい)

もし、列1と列2を 2:1 の比率で表示したい場合は
・列1幅:60
・列2幅:30
くらいで設定するとおおよそ、 2:1 になる。


 JTableで一行毎に色を変える

http://guijava.180r.com/pJTable%A4%C7%B0%EC%B9%D4%CB%E8%A4%CB%BF%A7%A4%F2%CA%D1%A4%A8%A4%EB.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class BirowTableRenderer extends DefaultTableCellRenderer{
     private static final Color BIROW_COLOR = new Color(204, 204, 255);
     private static final Color ORG_COLOR=Color.WHITE;
     
     public Component getTableCellRendererComponent(JTable tb,
                             Object val,boolean isSelected,
                             boolean hasFocus,int r,int c){
 
         if(r % 2 == 0){
             setBackground(BIROW_COLOR);
         }else{
             setBackground(ORG_COLOR);
         }
         return super.getTableCellRendererComponent(tb,val,
                                     isSelected,hasFocus,r,c);
     }
 }

レンダラー設定

1
2
 JTable tb = getTestTable();
 tb.setDefaultRenderer(Object.class,new BirowTableRenderer());

 再描画(更新)

revalidate で更新されない場合は

updateUI

を使ってみる。

[カテゴリ: プログラミング言語 > Java]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2010年12月16日 23時00分50秒