我的项目中有一个Swing Jtree。我有一个addNewItem方法,该方法允许创建一个新节点。问题是如何在如图所示自动创建新节点之后立即将焦点从当前元素更改为最后创建的节点?
public void addNewItem(){
DefaultMutableTreeNode node = ((DefaultMutableTreeNode)getTree().getLastSelectedPathComponent());
if(node==null) return;
Holder h_node = (Holder) node.getUserObject();
String key = h_node.getData().getClass().getSimpleName();
BaseNodeAdapter adp = BaseNodeAdapter.of(key, h_node.getData());
while(adp==null && node!=null){
node = (DefaultMutableTreeNode) node.getParent();
h_node = (Holder) node.getUserObject();
key = h_node.getData().getClass().getSimpleName();
adp = BaseNodeAdapter.of(key, h_node.getData());
}
if(adp==null) return; // no adapter
System.out.println("addNewItem: adapter "+adp.getClass().getSimpleName());
String[] selectable = adp.getSelectable();
if(selectable.length==0) return; // no selectable
String strPath = Tools.getPath(node);
String type = (String)JOptionPane.showInputDialog(this,L("Create_a_new_item_for")+" "+key+":",strPath,JOptionPane.QUESTION_MESSAGE,null,selectable,null);
if(type!=null){
int res = adp.addItem(type);
System.out.println("add item : "+res);
if(res==BaseNodeAdapter.FAILED) return; // nothing
if(res==BaseNodeAdapter.PARENT) rebuildNode((DefaultMutableTreeNode) node.getParent());
else rebuildNode(node);
}
}
类似:
TreePath current = new TreePath(nodeYouJustCreated.getPath());
tree.setSelectionPath( current );