我有一个家庭作业要为酒店创建多房间选择。我的想法是使用jTree,这样我就可以选择jTree的多个子对象。当我们使用jTree时,我们可以通过ctrl+click选择多个选项。我开始在Netbeans中创建项目,然后从Palette添加jTree。之后,我使用TreeModel的自定义代码,并添加如下元素:
public void generateRoom() {
DefaultMutableTreeNode room = new DefaultMutableTreeNode("Room");
DefaultMutableTreeNode common = new DefaultMutableTreeNode("Common");
DefaultMutableTreeNode vip = new DefaultMutableTreeNode("VIP");
DefaultMutableTreeNode vvip = new DefaultMutableTreeNode("VVIP");
room.add(common);
room.add(vip);
room.add(vvip);
DefaultTreeModel model = new DefaultTreeModel(room);
jTree1.setModel(model);
}
在constructor中调用该方法后,我在jTree上添加了事件MouseClick。问题是我找不到如何通过ctrl+click获取多个子项。
谢谢你,希望有人帮我。。
我试着添加MouseInclick如下:
private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
if (evt.getClickCount() == 1) {
System.out.println(jTree1.getSelectionModel().toString());
}
}
是的,它在控制台上工作,结果如下:如果我只点击一个子项,结果是:javax.swing.tree.DefaultTreeSelectionModel 15980197[[Room,Common]@1@
如果我使用ctrl+click,它显示:javax.swing.tree.DefaultTreeSelectionModel 15980197[[Room,Common]@1@Room,VIP]@2]
现在的问题是如何获得像Common或VIP这样的字符串。。非常感谢。
可能使用
public TreePath[] getSelectionPaths()
或
public int[] getSelectionRows()