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()
或记录它们。