-1

ここに私のコードがあります:

    public void submitReply(ActionEvent e) {
    String replyBy = userName;
    String reply = jTextArea_reply.getText();
    if (reply.equals("")) {
        JOptionPane.showMessageDialog(null, "Comment cannot leave blank");
    } else {
        eForumTopics comment = new eForumTopics(replyBy, reply);
        if (comment.createComment() == true) {
            JOptionPane
                    .showMessageDialog(null,
                            "Reply submitreted successfully. You will be redirect to main page.");
            SetUpJTableComment();

    public void SetUpJTableComment() {
    // Get jTable model
    DefaultTableModel tableModel1 = (DefaultTableModel) jTableComment
            .getModel();
    // Store column data into Array (3 columns)
    String[] data = new String[3];
    // Set Up Database Source
    db.setUp("IT Innovation Project");
    String sql = "Select reply_content,reply_by from forumReplies WHERE reply_topic = "
            + topicId + "";
    ResultSet resultSet = null;
    // Call readRequest to get the result
    resultSet = db.readRequest(sql);

    try {
        while (resultSet.next()) {
            data[0] = resultSet.getString("reply_content");
            data[1] = resultSet.getString("reply_by");
            // Add data to table model
            tableModel1.addRow(data);
        }
        resultSet.close();
    } catch (Exception e) {
        System.out.println(e);
    }
    // add tablemodel to jtable

}

問題は、ユーザーが新しい返信を投稿するたびに、既存の投稿が一緒に再追加されることです。新しい返信で既存の投稿を再度追加し続けるのではなく、コメント ボックスからの新しい返信のみが jTable に追加されるようにします。私は何を使うべきですか?forループ?前もって感謝します。

4

1 に答える 1

0

DefaultTableModel のコンテンツを削除する正しい方法は次のとおりです。

model.setRowCount(0);

vs. コメントで言及されている邪悪な方法 (ここでは繰り返さない ;-) は、2 つのルールに違反しています

  • 足元にあるモデルの基礎となるデータ構造を決して変更しない
  • モデル外部のコードからモデルの fireXX を決して呼び出さない

後者を実行すると効果があると思われる場合、それは警告信号です。前者に違反したか、モデルの実装が正しくありません。

于 2013-01-15T12:28:41.050 に答える