0

Netbeans の設計モードで作成された JTable があります。私のコードでは、起動時に次のコード行を配置することを選択しました。

model = new TableModel();
tbShares.setAutoCreateColumnsFromModel(false);
tbShares.setModel(model);

tbShares私のJTableオブジェクトです。

私の JTable を含む JFrame を以下に示します。

シェアマネージャー

最初の列はObject型 (他の 2 つは文字列) として設定されているため、画像を表示できます。画像をロードするために入力したこのコードがありますが、機能していません (list.add残りの部分は、私のコードがどのように構成されているかについての洞察を与えることです)。これは の拡張子ですAbstractTableModel

public void addRegister(String status, String name, String clients){
        ImageIcon activeStatus = new ImageIcon(CleanSheets.class.getResource("res/img/active.png"));
        ImageIcon inactiveStatus = new ImageIcon(CleanSheets.class.getResource("res/img/inactive.png"));
        list.add(new Register((status.equals("true") ? activeStatus : inactiveStatus), name, clients));
        this.fireTableDataChanged();
    }

    class Register{
        Object status;
        String name;
        String clients;

        public Register(Object status, String name, String clients) {
            this.status = status;
            this.name = name;
            this.clients = clients;
        }
    }

おそらく、指定したフォルダーから画像を取得しますが、実際の画像ではなく、その列にテキストを出力しているだけです。正しい画像を表示するにはどうすればよいですか?ありがとうございました。

4

2 に答える 2

2

この短い記事TableCellRendererを読んで再実装する必要があります

于 2012-06-07T11:43:33.337 に答える
1

ImageIcon activeStatus = new ImageIcon(CleanSheets.class.getResource("res/img/active.png")); ImageIcon inactiveStatus = new ImageIcon(CleanSheets.class.getResource("res/img/inactive.png"));

  • Icon/ImageIconローカル変数として準備します。それぞれでRendererこれらを再作成すると、クレイジーな期間にイベントがたくさんあるためですObjectsMouse or Key events

this.fireTableDataChanged();

  • コンテンツ全体を追加/削除するための正しい通知機能ですJTable。TableCell にはfireTableCellXxx()

  • このコンテキストでは (に 1 行のみを追加TableModel) についてfireTableRowsInserted()

正しい画像を表示するにはどうすればよいですか?

  • そこにあるように、新しい行を追加Icon / ImageIconしてから、TableModel直接追加します。これ以上の変換は必要ありません。宣言が必要です。問題はありません。JTable はIcon / ImageIconAPIに実装されています。

  • Icon / ImageIconフォームが変更されていない場合はレンダラーを使用しないでくださいMouse or Key events

于 2012-06-07T11:59:12.143 に答える