[英]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.