Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaSwing中使用jTable查看论坛主题_Java_Sql_Swing_Jtable_Listselectionlistener - Fatal编程技术网

在JavaSwing中使用jTable查看论坛主题

在JavaSwing中使用jTable查看论坛主题,java,sql,swing,jtable,listselectionlistener,Java,Sql,Swing,Jtable,Listselectionlistener,我试图用JavaSwing创建一个论坛。目前我有不同的类别。主题按主题ID进行区分。当我点击特定类别中的特定行时,我会尝试这样做,然后应用程序将重定向到特定的线程内容,并通过topicId进行过滤 例如,我有一条线。该线程属于Discussion类别,TopId为5。当我点击论坛主页上的讨论区时,它会将我重定向到一个按数据库中的类别筛选的表。然后,当我单击jTable第3行中的线程时,它将在数据库中显示topicId 5的数据 我知道通过在jTable中使用getSelectedRow方法可以实

我试图用JavaSwing创建一个论坛。目前我有不同的类别。主题按主题ID进行区分。当我点击特定类别中的特定行时,我会尝试这样做,然后应用程序将重定向到特定的线程内容,并通过topicId进行过滤

例如,我有一条线。该线程属于Discussion类别,TopId为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行。那么,在JavaSwing中是否还有其他方法可以显示论坛的主题视图呢?我的意思是如果不使用getSelectedRow方法来获取主题ID。提前感谢。

您可以确定所选行,而不是
JTable
上的
MouseListener
,如中所示。如图和所示,是对选择更改作出反应的好方法


当您的线程在本质上具有层次性时,也要考虑一个“代码>大纲/<代码>视图,如图所示。它使用相同的选择侦听器,如图所示

为了更快地获得更好的帮助,请发布一个。。。与@GabrielHeng()拥有新帐户的同一人,还是同一类别的新人员?无论如何:请学习java命名约定并坚持它们。请从单个帐户发布;你可以申请一个,我已经修好了。我使用默认的表模型重新编码了整个过程,现在可以正常工作了。谢谢