将选定的Jtree节点设置为JTable

时间:2016-03-07 16:49:21

标签: java mysql swing jtable jtree

需要完成的功能是:

  1. 选择主要群组
  2. 从子组(测试名称)中选择
  3. 点击>>按钮,表示将选择移动到Jtable
  4. 在Jtable
  5. 上显示相应价格的选定(测试)

    条件:

    • 如果已选择所选节点(测试名称)alread并将其添加到Jtable show消息中,则说:已添加测试名称。
    • 我们可以选择并添加许多测试名称

    Demo image

    重要的是说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");
        }
    

    逗人 错误在哪里? 感谢

2 个答案:

答案 0 :(得分:1)

JTree添加TreeSelectionListener,如图here所示。在听众中,更新TableModel的{​​{1}};当JTable的实现触发了setValueAt()时,监听表会相应地更新自己。您的表格模型应展开TableModelEvent,如here所示,并包含AbstractTableModel。您的Set<Row>课程应该包含Rowname。如果price实施了Row,如引用的示例here所示,则Comparable<Row>会在您调用add()时自动排除重复项。

答案 1 :(得分:-1)

如果问题是新的TableModel未在UI中反映出来,请使用tableModel.fireTableDataChanged()。