【发布时间】:2020-05-16 01:25:04
【问题描述】:
我试图将一些 JTrees 放入一个 JCombobox,以下不起作用:
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
public class TestDialog extends JDialog {
public TestDialog(){
super();
JComboBox<JTree> cb = new JComboBox<>();
DefaultMutableTreeNode firstRoot = new DefaultMutableTreeNode("First Root Node");
DefaultMutableTreeNode firstChild = new DefaultMutableTreeNode("First Child Node");
DefaultMutableTreeNode secondChild = new DefaultMutableTreeNode("Second Child Node");
firstRoot.add(firstChild);
firstRoot.add(secondChild);
JTree firstTree = new JTree(firstRoot);
cb.addItem(firstTree);
DefaultMutableTreeNode secondRoot = new DefaultMutableTreeNode("Second Root Node");
DefaultMutableTreeNode childOfSecondNode = new DefaultMutableTreeNode("Child of Second Node");
secondRoot.add(childOfSecondNode);
JTree secondTree = new JTree(secondRoot);
cb.addItem(secondTree);
add(cb);
pack();
setVisible(true);
}
}
对话框不会将实际的 JTree 显示为 JCombobox 的可选元素,而是显示两个长字符串,例如 javax.swing.JTree[,0,0,0x0,invalid,...]。
我的问题是,我该如何解决这个问题?
【问题讨论】:
-
"..试图将多个 JTree 放入一个 JCombobox" ... 为什么?跨度>
-
我想对元素进行分组。一个示例是选择不同汽车的组合框,JTree 的根节点将是汽车制造商,子节点将是不同的汽车类型。这样,汽车制造商就会对汽车进行“分类”,以便更好地使用。
-
使用多个组合框。当用户首先选择制造商时,在第二个中填充他们制造的汽车型号。要么,要么只使用标准的
JTreesans 组合框。试图将一棵树塞进组合框中,我看不出有什么好处,也看不出有什么坏处。 -
是否可以嵌套
Comboboxes,因为制造商的列表会很大,而且制造商不应该是UI的主要部分。 -
我重读了你之前的评论,现在明白你的意思了,谢谢你的回答。
标签: java swing jcombobox jtree