簡體   English   中英

JTree數據庫節點在java中的textfield中選擇和顯示

[英]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模式正確獲取taskid ,或者只是將它們打印到控制台中。

我建議你在`JTree1MouseClicked中測試這段代碼。

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

應該顯示所選節點,這應該工作,然后你需要檢查你的請求,我認為問題是存在的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM