java中JTree数据库节点选择并显示在textfield中

java中JTree数据库节点选择并显示在textfield中,java,jdbc,Java,Jdbc,我有一个JTree,其中填充了数据库中的任务列表,我试图创建一个鼠标单击的侦听器,以便在单击节点时,id和任务显示在JTextfields 下面是我的代码 private void jTree1MouseClicked(java.awt.event.MouseEvent evt) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree1.getLastSelectedPathComponent(); Objec

我有一个
JTree
,其中填充了数据库中的任务列表,我试图创建一个鼠标单击的侦听器,以便在单击节点时,id和任务显示在
JTextfields

下面是我的代码

private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {
    DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree1.getLastSelectedPathComponent();
    Object nodeInfo = node.getUserObject();

    try {
        String query = "select * from Task where task=" + nodeInfo + "";
        pst = con.prepareStatement(query);
        rs = pst.executeQuery();
        if (rs.next()) {
            int id = rs.getInt("id");
            String task = rs.getString("task");
            parentIdTxt.setText("" + id);
            childTxt.setText("" + task);
        }
    } catch (Exception e) {

    }
}

我的问题是,即使我的程序运行没有任何问题,每当我点击节点时,什么都不会发生?如果您能帮我指出我遗漏的内容,我们将不胜感激。

您必须重新绘制文本字段或更新其布局,以便它们有足够的空间显示内容。在设置文本字段的内容后,尝试添加以下代码:

parentIdTxt.validate();
parentIdTxt.repaint();
childTxt.validate();
childTxt.repaint();

您必须重新绘制文本字段或更新其布局,以便它们有足够的空间显示内容。在设置文本字段的内容后,尝试添加以下代码:

parentIdTxt.validate();
parentIdTxt.repaint();
childTxt.validate();
childTxt.repaint();

事实上,您得到了一个错误,但您没有看到它,因为您没有打印它,您可以使用以下方法检查错误:

} catch (Exception e) {
    e.printStackTrace();
}
字符串应介于
'nodeinfo'
之间,因此您必须使用:

String query="select * from Task where task= '" + nodeInfo + "'";
但如果未正确实现PreparedStatement,则可以使用以下方法:

String query="select * from Task where task = ?";
insert.setString(1, nodeinfo);
rs = pst.executeQuery();
...

事实上,您得到了一个错误,但您没有看到它,因为您没有打印它,您可以使用以下方法检查错误:

} catch (Exception e) {
    e.printStackTrace();
}
字符串应介于
'nodeinfo'
之间,因此您必须使用:

String query="select * from Task where task= '" + nodeInfo + "'";
但如果未正确实现PreparedStatement,则可以使用以下方法:

String query="select * from Task where task = ?";
insert.setString(1, nodeinfo);
rs = pst.executeQuery();
...

首先,您需要检查是否使用
Debug
模式正确获取
任务
id
,或者只是将它们打印到控制台中

我建议您在“jtree1mouse1”中测试这段代码

 private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {      
      childTxt.setText(jTree1.getLastSelectedPathComponent().toString());
}

这应该显示所选的节点,应该可以工作,然后您需要检查您的请求,我认为问题就在那里

首先,您需要检查您是否使用
调试模式或仅通过将它们打印到控制台来正确获取
任务
id

我建议您在“jtree1mouse1”中测试这段代码

 private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {      
      childTxt.setText(jTree1.getLastSelectedPathComponent().toString());
}

这应该会显示所选节点,这应该可以工作,然后您需要检查您的请求,我认为问题就在那里

非常感谢,当我放置stacktrace时,我发现我从不同的数据库名称中提供了aa列,代码现在可以工作了非常感谢,当我放入stacktrace时,我发现我输入了来自不同数据库名称的aa列,代码现在运行良好谢谢,你对问题的看法是正确的,这是因为列名错误谢谢,你对问题的看法是正确的,这是因为列名错误你正在接受异常,至少使用
e.printStackTrace()
或记录它们。您正在吞咽异常,至少使用
e.printStackTrace()
或记录它们。