1

MS Accessに接続された単純なTo-DoリストJavaアプリケーションを作成しようとしていますが、JTableDefaultTableModelを使用してリストを表示しました。ボタンをクリックしたときに色を変えて、完了したタスクにマークを付けたい。インジケーターとして機能する「 completed 」という名前のブールフィールドがあります。

String header[] = {"priority", "task"};
String data[][];
DefaultTableModel model = new DefaultTableModel(data, header);
JTable table = new JTable(model);

// to be replaced with code that affects only specific cells not the whole table
table.setFont(customFont);

私はすでにcustomFontと呼ばれるFontオブジェクトを持っており、これを適用する準備ができています。私の質問は、completed==trueである特定のセルにのみそれを適用するにはどうすればよいですか。

サンプルコードをいただければ幸いです。

4

3 に答える 3

4
  • 最も簡単な方法はprepareRenderer()を見ることです。何よりも @camickrテーブル行レンダリング

  • JTableに基づくビューTableModelです。ほとんどの場合、またはの内部からモデルconverXxxToXxxに対してビューを変換する必要があります。prepareRenderergetTableCellRendererComponentJTable

  • メソッド

コード

public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);

JTable の特定のセルへのアクセスを返します - ( TableCellRenderer renderer, int row, int column )

于 2012-04-10T11:03:26.987 に答える
3

DefaultTableCellRenderer を使用すると、setForeground() と setBackground() を使用できます。

ページ参照.. http://www.jyloo.com/news/?pubId=1282737395000

またはこの例を参照してください...

/*This is the raw code I have written.*/ 
JTable Tbl=new JTable(2,2){ 
    DefaultTableCellRenderer colortext=new DefaultTableCellRenderer();
    {
        colortext.setForeground(Color.RED);
    }
    @Override
    public TableCellRenderer getCellRenderer(int arg0, int arg1) {
        return colortext;
    }
};
于 2012-04-10T11:09:01.117 に答える
0

この動作を指定できると思います

TableCellRenderer.getTableCellRendererComponent(JTable table, Object value,
                        boolean isSelected, boolean hasFocus, 
                        int row, int column)

テーブルの方法

于 2012-04-10T10:58:59.973 に答える