Java JTree节点上的JTable问题

Java JTree节点上的JTable问题,java,jtable,jtree,Java,Jtable,Jtree,我正在尝试在JTree的节点上创建JTable。我对以下实施有几个问题: 由于某种原因,用户无法与JTree交互(选择单元格) 如果我将JTable放在JScrollPane中,滚动不起作用。我正在实现的JTree也在JScrollPane中,因此可能存在一些干扰(#滚动异常) 我无法自定义表格的尺寸 只有在JScrollPane 你能帮我解决这些问题吗 j节点中的表格 import java.awt.Component; import java.util.HashMap; import j

我正在尝试在
JTree
的节点上创建
JTable
。我对以下实施有几个问题:

  • 由于某种原因,用户无法与
    JTree
    交互(选择单元格)
  • 如果我将
    JTable
    放在
    JScrollPane
    中,滚动不起作用。我正在实现的
    JTree
    也在
    JScrollPane
    中,因此可能存在一些干扰(#滚动异常)
  • 我无法自定义表格的尺寸
  • 只有在
    JScrollPane
你能帮我解决这些问题吗

j节点中的表格

import java.awt.Component;
import java.util.HashMap;
import java.util.Map;

import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.tree.DefaultTreeCellRenderer;

public class ExampleRenderer extends DefaultTreeCellRenderer {
    private Map<String, JTable> tables = new HashMap<String, JTable>();

    @Override
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
        Component c = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);

        if (value.toString().startsWith("TABLE:")) {
            c = tables.get(value.toString());

            if (c == null) {
                JTable table = new JTable(createModel(value.toString()));

                //table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);

                //JScrollPane pane = new JScrollPane(table);

                tables.put(value.toString(), table);
                c = tables.get(value.toString());
            }
        }

        return c;
    }

    private TableModel createModel(String tableData) {
        tableData = tableData.substring(6, tableData.length());

        DefaultTableModel model = new DefaultTableModel();
        String[] colData = tableData.split("¬");

        for (String data : colData) {
            String[] components = data.split("=");
            model.addColumn(components[0], components[1].split(","));
        }

        return model;
    }
}
首先,看一看。其次,考虑一些类似于<代码> JXTeReTabe<代码>的内容。首先,看一看。其次,考虑一些类似于<代码> JXTreTest< /Cord>之类的东西。
public ExampleJTreeWithJTable() {
    setLayout(new BorderLayout(0, 0));
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    DefaultMutableTreeNode root = new DefaultMutableTreeNode("Example");
    root.add(new DefaultMutableTreeNode("TABLE:Column A=Cell 1.1,Cell 2.1,Cell 3.1¬Column B=Cell 1.2,Cell 2.2,Cell 3.2"));

    JTree tree = new JTree(root);
    tree.setCellRenderer(new ExampleRenderer());

    add(tree, BorderLayout.CENTER);
    pack();
}