-1

重複の可能性:
Swing - セルの値に基づいてセルの色を設定する

JTable とその TableModel を含む Spreadsheet クラスがあります。私のメイン ウィンドウには、このスプレッドシートとボタンのリスト (たとえば太字のボタン) が含まれています。

選択したセルを正常に取得できますが (以下のコードを参照)、その内容やフォント、色などを変更する方法がわかりません。

public void actionPerformed(ActionEvent e)
{
    int rowToUpdate = -1, columnToUpdate = -1;
    for(int i = 0 ; i < tableToUpdate.getRowCount() ; i++)
        for (int j = 0 ; j < tableToUpdate.getColumnCount() ; j++)
            if(tableToUpdate.isCellSelected(i, j)){ rowToUpdate = i; columnToUpdate = j; }

    if(rowToUpdate >= 0 && columnToUpdate >= 0)
    {
        if(e.getSource == boldButton)
        {
             // Here, how to change the bold of the cell(rowToUpdate,columnToUpdate)
        }
    }
}
4

1 に答える 1

1

いくつかのこと: 第一に、あなたが書いたコードはもっと単純になる可能性があります。JTableにはすぐに使用できるメソッドが付属しgetSelectedRow()ているため、自分でループを記述する必要はありません。getSelectedColumn()for

そうは言っても、選択したセルがレンダリングされる方法を変更しようとしているだけであれば、おそらく実際にはこれを実行したくないでしょう。セルのレンダリング方法を変更する方法は、TableCellRenderer. がセルをレンダリングする必要がある場合JTable、そのセルに関するすべての情報 (値、選択されているかどうかなど) を に渡しますTableCellRendererDefaultTableCellRendererデフォルトで がインストールされており、セルを としてレンダリングしますJLabels。を使用して独自のレンダラーを設定できますsetDefaultRenderer()。あなたの場合、拡張DefaultTableCellRenderer、オーバーライドgetTableCellRendererComponent()して呼び出しsuper()、そしてsuper()戻ったら、セルが選択されている場合はフォントを太字に設定するのは非常に簡単です。

の javadoc にJTableは、カスタム レンダラーの使用に関する特別なセクションがある JTable チュートリアルへのリンクがあります。このチュートリアルは (他の優れた Swing チュートリアルと共に) http://docs.oracle.com/javase/tutorial/uiswing/components/table.htmlにあります。

于 2013-01-20T16:15:55.930 に答える