0

我尝试使用 java swing 为论坛做。这是我的表格代码:

    public void SetUpJTable() {
    DefaultTableModel tableModel = (DefaultTableModel) jTable.getModel();
    String[] data = new String[4];
    db.setUp("IT Innovation Project");
    String sql = "Select topic_title,topic_description,topic_by from forumTopics WHERE topic_id = "
            + topicId + "";
    ResultSet resultSet = null;
    resultSet = db.readRequest(sql);
    try {
        while (resultSet.next()) {
            data[0] = resultSet.getString("topic_title");
            data[1] = resultSet.getString("topic_description");
            data[2] = resultSet.getString("topic_by");
            tableModel.addRow(data);        
        }
        resultSet.close();
    } catch (Exception e) {
        System.out.println(e);
    }
}

我设置了这个表来检索用户从主页选择某个线程的主题详细信息。我设置了另一个表来存储用户的回复。就这个 :

    public void SetUpJTableComment() {
    DefaultTableModel tableModel1 = (DefaultTableModel) jTableComment
            .getModel();
    String[] data = new String[3];
    db.setUp("IT Innovation Project");
    String sql = "Select reply_content,reply_by from forumReplies WHERE reply_topic = "
            + topicId + "";
    ResultSet resultSet = null;
    resultSet = db.readRequest(sql);
    try {
        while (resultSet.next()) {
            data[0] = resultSet.getString("reply_content");
            data[1] = resultSet.getString("reply_by");
            tableModel1.addRow(data);
        }
        resultSet.close();
    } catch (Exception e) {
        System.out.println(e);
    }
}

这就是我设置表格的方式:

    private JTable getJTableComment() {
    String header[] = { "Comment", "Reply By" };
    if (jTableComment == null) {
        jTableComment = new JTable() {
            public boolean isCellEditable(int nRow, int nCol) {
                return false;
            }
        };
    }
    DefaultTableModel tableModel1 = (DefaultTableModel) jTableComment
            .getModel();
    tableModel1.setColumnIdentifiers(header);

    jTableComment.getColumnModel().getColumn(0).setMinWidth(700);
    jTableComment.getColumnModel().getColumn(0).setMaxWidth(800);

    jTableComment.getColumnModel().getColumn(1).setMinWidth(97);
    jTableComment.getColumnModel().getColumn(1).setMaxWidth(100);

    jTableComment.getTableHeader().setFont(
            new Font("Dialog", Font.PLAIN, 20));
    jTableComment.getTableHeader().setForeground(Color.white);
    jTableComment.getTableHeader().setBackground(new Color(102, 102, 102));
    jTableComment.setRowHeight(50);
    jTableComment.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    jTableComment.setFont(new Font("Dialog", Font.PLAIN, 18));
    return jTableComment;
}

它与两个分隔表完美配合。我想知道是否有某种方法可以将这两个表合并到一个表中?以及如何自定义表格以使其看起来不那么像表格,因为我当前的表格只是 ..solid-table 并且我的老师要求我改进它,但我不知道这样做。我试图将按钮添加到表中,但我意识到我无法从 try 语句中添加它,因为那是直接从数据库中检索数据。任何指南?提前致谢。

4

1 回答 1

1

您可以使用 SQL连接构造并拥有一个包含更多列的表:

select topic_title,topic_description,topic_by,
       reply_content,reply_by 
         from forumTopics join forumReplies 
           on (forumTopics.topic_id=forumReplies.topic_id)  WHERE topic_id = 1234

然后像您已经在做的那样从五列结果集中构建模型。

但是如果一个论坛主题有多个回复,那么肯定会在表格中重复该主题部分。

要使表格看起来不像表格,可以试试Swing Labs的JTreeTable,它允许有树状的子部分,这正是必需的。它不是系统库的一部分,但是您需要下载它。可以在此处找到有关如何仅使用 JTreeTable 的一些源代码。

关于 JTreeTable 的外观是 Swing Labs,您可以在他们的 web-startable demo中看到。它还自动显示代码示例。

于 2013-01-17T13:27:45.503 回答