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
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();
}