1

Java swing でフォーラムを作成してみました。現在、私はさまざまなカテゴリを持っています。トピックは topicId によって区別されます。特定のカテゴリ内の特定の行をクリックすると、アプリは topicId でフィルタリングされた特定のスレッド コンテンツにリダイレクトされます。

たとえば、スレッドがあります。スレッドはディスカッション カテゴリにあり、topidId は 5 です。フォーラムのメイン ページのディスカッション セクションをクリックすると、データベース内のカテゴリでフィルタリングされたテーブルにリダイレクトされます。次に、jTable の行 3 にあるスレッドをクリックすると、データベースに topicId 5 のデータが表示されます。

jTable で getSelectedRow メソッドを使用してこれを行う方法があることは知っています。だからここに私のコードがあります:

    jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                if (!e.getValueIsAdjusting()) {
                    int viewRow = jTable.getSelectedRow();
                    if (viewRow >= 0) {
                        topicId = jTable.convertRowIndexToModel(viewRow);
                        System.out.println(topicId);
    }
                }
            }
        });

    jTable.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent e) {                      
    eForumTopics topics = new eForumTopics(topicId);
                topics.retrieveThread();
                getJFrame().dispose();
                eForumThreadContent myWindow = new eForumThreadContent(topicId);
                myWindow.getJFrame().setVisible(true);
            }
        });

これが私のretrieveThreadメソッドです:

    public boolean retrieveThread(){
    boolean success = false;
    ResultSet rs = null;
    DBController db = new DBController();
    db.setUp("IT Innovation Project");
    String dbQuery = "SELECT topic_title,topic_description,topic_by FROM forumTopics WHERE topic_id = " + topicId
            + "";
    rs = db.readRequest(dbQuery);
    db.terminate();
    return success;
}

}

jTable の列 0 に Id 列を取得しました。したがって、ユーザーが特定の行をクリックするたびに、その行の Id が topicId に保存され、以下が実行されます。ただし、このアプリは、別の行をクリックしても行 0 を返し続けます。Javaスイングでフォーラムのトピックビューを表示する他の方法はありますか? つまり、getSelectedRow メソッドを使用して topicId を取得しない場合です。前もって感謝します。

4

1 に答える 1

2

の代わりに、MouseListenerHow to Use Tables にJTable示すように、選択した行を決定できます。こことここに示さているは、選択の変更に反応する良い方法です。ListSelectionListener

スレッドは本質的に階層的に聞こえるため、ここOutlineに示すビューも検討してください。ここに示されているのと同じ選択リスナーを使用します。

于 2012-12-24T07:15:36.587 に答える