[英]JTree database node select and display in textfield in java
我有一个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();
事实上你得到一个错误,但你没有看到它,因为你不打印它,你可以使用以下方法检查错误:
} 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
模式正确获取task
和id
,或者只是将它们打印到控制台中。
我建议你在`JTree1MouseClicked中测试这段代码。
private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {
childTxt.setText(jTree1.getLastSelectedPathComponent().toString());
}
应该显示所选节点,这应该工作,然后你需要检查你的请求,我认为问题是存在的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.