0

Javaスイングを使用してフォーラムでやろうとしています。テーブルのコードは次のとおりです。

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

2 つの分離テーブルで完璧に機能します。これらのテーブルの両方を 1 つのテーブルに結合する方法はあるのでしょうか? そして、テーブルをカスタマイズして、テーブルがあまり好きではないようにするにはどうすればよいですか。現在のテーブルは単なる..ソリッドテーブルであり、先生から改善を求められましたが、そうする考えがありません。そして、テーブルにボタンを追加しようとしましたが、データベースから直接データを取得するため、try ステートメントからボタンを追加できないことに気付きました。ガイドはありますか?前もって感謝します。

4

1 に答える 1

1

SQL結合構造を使用して、より多くの列を持つ 1 つのテーブルを作成できます。

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

次に、すでに行っているように、5 列の結果セットからモデルを構築します。

ただし、フォーラムのトピックに複数の返信がある場合は、トピックの部分がテーブルで繰り返されます。

テーブルをテーブルのように見えないようにするには、Swing LabsのJTreeTableを試してみてください。ツリーのようなサブセクションを持つことができます。まさにそれが必要です。これはシステム ライブラリの一部ではありませんが、ダウンロードする必要があります。JTreeTable を作成する方法に関するいくつかのソース コードは、ここにあります。

JTreeTable が Swing Labs でどのように見えるかについては、web-startable demoで確認できます。また、コード サンプルも自動的に表示されます。

于 2013-01-17T13:27:45.503 に答える