Vues de sujet de forum utilisant jTable dans java swing


J'ai essayé de créer un forum en java swing. Actuellement, j'ai différentes catégories. Les sujets sont différenciés par topicId. J'essaie de faire comme lorsque je clique sur une certaine ligne dans certaines catégories, puis l'application redirigera vers certains filtres de contenu de thread par topicId.

Par exemple, j'ai un fil. Le fil est dans la catégorie Disscussion et topidId est 5. Lorsque j'ai cliqué sur la section de discussion sur la page principale du forum, il me redirigera vers un tableau filtré par catégorie dans la base de données. Ensuite, lorsque je clique sur le thread qui se trouve dans la ligne 3 de la jTable, il m'affichera les données de topicId 5 dans la base de données.

Je sais qu'il existe un moyen de le faire en utilisant la méthode getSelectedRow dans jTable. Voici donc mes codes:

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

Voici ma méthode 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;
}

}

J'ai obtenu une colonne Id à la colonne 0 de jTable. Ainsi, chaque fois que l'utilisateur clique sur une certaine ligne, l'id de cette ligne sera stocké dans topicId et exécutera ce qui suit. Cependant, cette app continuez à me renvoyer la ligne 0 même lorsque j'ai cliqué sur différentes lignes. Existe-t-il donc d'autres moyens d'afficher les vues de sujet d'un forum dans java swing? Je veux dire si vous n'utilisez pas la méthode getSelectedRow pour obtenir le topicId. Merci à l'avance.

Author: mKorbel, 2012-12-24

1 answers

Au Lieu de MouseListener sur JTable, vous pouvez déterminer les lignes sélectionnées(s), comme indiqué dans la Comment Utiliser des Tableaux. Un ListSelectionListener, illustré ici et ici, est une bonne façon de réagir à un changement de sélection.

Comme vos threads semblent de nature hiérarchique, considérez également une vue Outline, montrée ici. Il utilise le même écouteur de sélection, montré ici.

 2
Author: trashgod, 2017-05-23 12:02:08