-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);

与评论中提到的邪恶方式相比(这里不再重复;-),它违反了两个规则

  • 永远不要改变其脚下模型的底层数据结构
  • 永远不要从模型外部的代码中调用任何模型的 fireXX

如果做后者似乎有帮助,这是一个警告信号:您要么违反了前者,要么您的模型实现不正确

于 2013-01-15T12:28:41.050 回答