我正在尝试创建一个由JTable组成的JTree。到目前为止,我成功地使用Jtables创建了一个Jtree。但是,我无法更改特定树节点的表的行数。每当我尝试调整行数时,树节点的所有行数都会发生变化。
我使用了以下链接中的代码:
我根据Trashgod的推荐编写了以下代码;但它没有用;你能不能给一些工作代码..
package helperPack;
import java.awt.BorderLayout;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
public class JTreeTrial extends JFrame {
/**
* @param args
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
DefaultMutableTreeNode parentNode = new DefaultMutableTreeNode("node");
JTree tree = new JTree(parentNode);
JTable table = new JTable();
table.setModel(new DefaultTableModel() {
private static final long serialVersionUID = 1L;
@Override
public int getRowCount() {
return 2;
}
@Override
public int getColumnCount() {
return 2;
}
@Override
public Object getValueAt(int row, int column) {
return ":" + "row" + ":" + column;
}
});
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getModel().getRoot();
node.setUserObject(table);
JTreeTrial trial=new JTreeTrial();
trial.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPane jsp = new JScrollPane(tree);
trial.add(jsp, BorderLayout.CENTER);
trial.pack();
trial.setVisible(true);
trial.setLocationRelativeTo(null);
}
});
}
}
示例:
|节点1 |
|a|b|
|c|d|
|节点2 |
|e|f|
|节点3 |
|g|h|
|i|j|
|k|m|
答案 0 :(得分:1)
不是在树中呈现表,而是添加TreeSelectionListener
并更新相邻组件中的单个JTable
。让每个TreeNode
包含Tablemodel
,并使用setModel()
更新JTable
。引用了几个相关的例子here。