2011-01-24 9 views

答えて

0

これはテーブルモデルから変更できないもので、セルレンダラから制御されます。

Code Ranchから取られたこの例を見てみましょう:

import java.awt.*; 
import javax.swing.*; 
import javax.swing.table.*; 

public class AlignRight 
{ 
    public static void main(String[] args) 
    { 
     String[] headers = { "column 1", "column 2", "column 3", "column 4" }; 
     int cols = 4; 
     int rows = 6; 
     String[][] data = new String[rows][cols]; 
     for(int row = 0; row < rows; row++) 
      for(int col = 0; col < cols; col++) 
       data[row][col] = "item " + (row * cols + col + 1); 
     JTable table = new JTable(data, headers); 
     DefaultTableCellRenderer renderer = 
       (DefaultTableCellRenderer)table.getDefaultRenderer(String.class); 
     renderer.setHorizontalAlignment(JLabel.RIGHT); 
     JFrame f = new JFrame(); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.getContentPane().add(new JScrollPane(table)); 
     f.setSize(400,400); 
     f.setLocation(200,200); 
     f.setVisible(true); 
    } 
} 
+0

ありがとうございます。 – HuggyBear

0

を私はあなたがAbstractTableModelにクラスを参照している、「抽象データモデル」で想定しています。これは実際に正当化を扱う正しい場所ではありません。テーブルモデルは、テーブルの背後にある「モデル」を表します。あなたがしたいことは、このモデルがスクリーンに表示される方法(「ビュー」)を変更することです。

これを行う適切な方法は、JTableのカスタムレンダリングを作成することです。あなたのケースでは、DefaultTableCellRendererクラスを拡張し、getTableCellRendererをオーバーライドして、返されたコンポーネントの水平方向の配置を設定することができます。カスタムレンダラの詳細については、http://download.oracle.com/javase/tutorial/uiswing/components/table.html#renderer