[英]Set the selected Jtree Node to JTable
需要完成的功能是:
條件:
不能說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
,如圖所示這里 。 在偵聽器中,更新JTable
的TableModel
; 當您的setValueAt()
觸發無用的TableModelEvent
時,偵聽表將相應地進行更新。 你的表格模型應該擴展AbstractTableModel
,如圖所示這里 ,並包含一個Set<Row>
。 您的Row
類應包含name
和price
。 如果Row
實現Comparable<Row>
,在所列舉的例子所示這里 ,然后Set<Row>
會自動當你調用排除重復add()
如果問題是新的TableModel沒有反映在UI中,請使用tableModel.fireTableDataChanged()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.