0

挿入されたデータと追加されたデータがjtableに表示されないことについて、ここで読んだのと同様の問題に直面しています。repaint() と revalidate() を試しましたが、役に立ちませんでした。

基本的に、A と B という 2 つのクラスがあります。A はクラス B の関数を呼び出して、データ行をテーブルに追加します。コードは次のとおりです (ちなみに、Netbeans 7.1.2 を使用してテーブルを追加し、更新を処理するコードを追加しています。)

public void callUpdateTable(){
    DefaultTableModel myModel = (DefaultTableModel)jTable1.getModel();
    DateFormat dateFormate = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    Object[] str = new Object[3];
    Date date = new Date();  

    str[0] = dateFormate.format(date);
    str[1] = "Robot";
    str[2] = "hello"; 
    // myModel.addRow(str);
    myModel.insertRow(1, str);
    myModel.setValueAt("Hello", 1, 2);
    System.out.println("count = " + myModel.getValueAt(1, 2));
    jTable1.repaint();
}

面白いことに、システムの印刷では、値を設定したセル (1,2) に値が出力されますが、テーブルには表示されません。ご協力ありがとうございました。

4

1 に答える 1

4

問題を示すSSCCEを作成できることが最善です。

電話する必要はありませんrepaint()/revalidate()。モデルの結果として、insertRow()実行によってテーブルの更新がトリガーされますfireTableRowsInserted()

DefaultTableModelvectorゼロベースのインデックスを持つものを使用します。インデックスが範囲外の場合にスローされるVector.insertElementAt()insertRow()を呼び出します。ArrayIndexOutOfBoundsException

モデルが空であると仮定して、これを試してください:

myModel.insertRow(0, str);

また、必ずEDTでテーブルを操作してください。

于 2012-07-07T03:28:28.743 に答える