java - jtree 中的 jtable 具有不同的行数

标签 java swing jtable jtree treecellrenderer

我正在尝试创建一个由 JTable 组成的 JTree。到目前为止,我成功地使用 Jtables 创建了 Jtree。但是,我无法更改特定树节点的表的行数。每当我尝试调整行数时,所有树节点的行数都会发生变化。

我使用了以下链接中的代码:

Jtable as a Jtree Node

根据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|

最佳答案

不要渲染树中的表,而是添加一个 TreeSelectionListener 并更新相邻组件中的单个 JTable。让每个 TreeNode 包含一个 Tablemodel,并使用 setModel() 更新 JTable。举了几个相关的例子here .

关于java - jtree 中的 jtable 具有不同的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17220712/

相关文章:

java - 如何在 Java 中比较字符串?

java - 使用 Java 在 Jtable 中显示客户数据

java - JLabel 超链接以在正确的 URL 处打开浏览器

java - 从表中的 JPanel 类返回 JTable

java - jtable 重新加载,但是当单击 jcheck 框时会弹出旧数据

java - 如何获取jtable中最后一行的值

JavaFX 场景生成器 : having a root node different from AnchorPane

java - 将此 Quicksort 实现的比较器从 <= 更改为 < 会导致无限递归。为什么?

java - 查找纪元与当前时间之间的时差

java - 更改表格中的预览字体?