簡體   English   中英

將選定的Jtree節點設置為JTable

[英]Set the selected Jtree Node to JTable

需要完成的功能是:

  1. 選擇主組
  2. 從子組中選擇(測試名稱)
  3. 單擊>>按鈕,這意味着將選擇移動到Jtable
  4. 在Jtable上顯示選中的(測試)和相應的價格

條件:

  • 如果已經選擇了所選節點(測試名稱)並將其添加到Jtable show消息中,請說:測試名稱已添加。
  • 我們可以選擇並添加許多測試名稱

演示圖片

不能說JTree數據來自兩個表main-group和sub-group

這是>>按鈕的代碼:

  try {
        DefaultMutableTreeNode selectedElement = (DefaultMutableTreeNode) TestTree.getSelectionPath().getLastPathComponent();
        Object[] row = {selectedElement};
        DefaultTableModel model = (DefaultTableModel) myTests_table.getModel();
        System.out.println(String.valueOf(row).toString() + "Hi");
        if (selectedElement.isLeaf() == true) {
            //model.addRow(row);
            // retrive date from DB price
            String sql = "SELECT  sub_group.name AS 'name', sub_group.price AS 'price'"
                    + "FROM sub_group \n"
                    + "where sub_group.name = '" + row + "' ";
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery(sql);
            while (rs.next()) {
                myTests_table.setModel(DbUtils.resultSetToTableModel(rs));
            }
        } else {
            JOptionPane.showMessageDialog(null, "Please Choose Test name!", "Error", JOptionPane.WARNING_MESSAGE);
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Error");
    }

親愛的錯誤在哪里? 謝謝

a添加TreeSelectionListener到您JTree ,如圖所示這里 在偵聽器中,更新JTableTableModel 當您的setValueAt()觸發無用的TableModelEvent時,偵聽表將相應地進行更新。 你的表格模型應該擴展AbstractTableModel ,如圖所示這里 ,並包含一個Set<Row> 您的Row類應包含nameprice 如果Row實現Comparable<Row> ,在所列舉的例子所示這里 ,然后Set<Row>會自動當你調用排除重復add()

如果問題是新的TableModel沒有反映在UI中,請使用tableModel.fireTableDataChanged()。

暫無
暫無

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

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