Java TreeCeleditor在编辑单元格后执行操作
我想在CellEditor消失后执行一个操作。然后调用哪个方法,从哪里开始?您必须通过向树中添加Java TreeCeleditor在编辑单元格后执行操作,java,swing,jtree,Java,Swing,Jtree,我想在CellEditor消失后执行一个操作。然后调用哪个方法,从哪里开始?您必须通过向树中添加CellEditorListener来收听JTree的CellEditor tree.getCellEditor().addCellEditorListener(new CellEditorListener() { @Override public void editingStopped(ChangeEvent e) { System.out
CellEditorListener
来收听JTree
的CellEditor
tree.getCellEditor().addCellEditorListener(new CellEditorListener() {
@Override
public void editingStopped(ChangeEvent e) {
System.out.println(((DefaultCellEditor)e.getSource()).getCellEditorValue());
}
@Override
public void editingCanceled(ChangeEvent e) {
System.out.println(((DefaultCellEditor)e.getSource()).getCellEditorValue());
}
});
完整示例
JFrame frame = new JFrame();
//Mock data
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
for (int i = 1; i < 5; i++) {
DefaultMutableTreeNode parent = new DefaultMutableTreeNode("Parent" + i);
for (int j = 1; j < 5; j++) {
parent.add(new DefaultMutableTreeNode("Child" + j));
}
root.add(parent);
}
DefaultTreeModel tmodel = new DefaultTreeModel(root);
JTree tree = new JTree(tmodel);
tree.setEditable(true);//To enable editing
tree.getCellEditor().addCellEditorListener(new CellEditorListener() {
@Override
public void editingStopped(ChangeEvent e) {
//add you code here
System.out.println(((DefaultCellEditor) e.getSource()).getCellEditorValue());
}
@Override
public void editingCanceled(ChangeEvent e) {
//add you code here too
System.out.println(((DefaultCellEditor) e.getSource()).getCellEditorValue());
}
});
frame.add(new JScrollPane(tree));
frame.setTitle("Tree Editor Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
JFrame=newjframe();
//模拟数据
DefaultMutableTreeNode根=新的DefaultMutableTreeNode(“根”);
对于(int i=1;i<5;i++){
DefaultMutableTreeNode父节点=新的DefaultMutableTreeNode(“父节点”+i);
对于(int j=1;j<5;j++){
添加(新的DefaultMutableTreeNode(“子”+j));
}
root.add(父级);
}
DefaultTreeModel tmodel=新的DefaultTreeModel(根);
JTree树=新的JTree(tmodel);
tree.setEditable(true)//启用编辑的步骤
tree.getCellEditor().addCellEditorListener(新CellEditorListener()){
@凌驾
公共作废编辑停止(变更事件e){
//在这里添加您的代码
System.out.println(((DefaultCellEditor)e.getSource()).getCellEditorValue());
}
@凌驾
公共作废编辑已取消(更改事件e){
//在这里也添加您的代码
System.out.println(((DefaultCellEditor)e.getSource()).getCellEditorValue());
}
});
frame.add(新的JScrollPane(树));
frame.setTitle(“树编辑器示例”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
您必须通过向树中添加CellEditorListener来收听JTree
的CellEditor
tree.getCellEditor().addCellEditorListener(new CellEditorListener() {
@Override
public void editingStopped(ChangeEvent e) {
System.out.println(((DefaultCellEditor)e.getSource()).getCellEditorValue());
}
@Override
public void editingCanceled(ChangeEvent e) {
System.out.println(((DefaultCellEditor)e.getSource()).getCellEditorValue());
}
});
完整示例
JFrame frame = new JFrame();
//Mock data
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
for (int i = 1; i < 5; i++) {
DefaultMutableTreeNode parent = new DefaultMutableTreeNode("Parent" + i);
for (int j = 1; j < 5; j++) {
parent.add(new DefaultMutableTreeNode("Child" + j));
}
root.add(parent);
}
DefaultTreeModel tmodel = new DefaultTreeModel(root);
JTree tree = new JTree(tmodel);
tree.setEditable(true);//To enable editing
tree.getCellEditor().addCellEditorListener(new CellEditorListener() {
@Override
public void editingStopped(ChangeEvent e) {
//add you code here
System.out.println(((DefaultCellEditor) e.getSource()).getCellEditorValue());
}
@Override
public void editingCanceled(ChangeEvent e) {
//add you code here too
System.out.println(((DefaultCellEditor) e.getSource()).getCellEditorValue());
}
});
frame.add(new JScrollPane(tree));
frame.setTitle("Tree Editor Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
JFrame=newjframe();
//模拟数据
DefaultMutableTreeNode根=新的DefaultMutableTreeNode(“根”);
对于(int i=1;i<5;i++){
DefaultMutableTreeNode父节点=新的DefaultMutableTreeNode(“父节点”+i);
对于(int j=1;j<5;j++){
添加(新的DefaultMutableTreeNode(“子”+j));
}
root.add(父级);
}
DefaultTreeModel tmodel=新的DefaultTreeModel(根);
JTree树=新的JTree(tmodel);
tree.setEditable(true)//启用编辑的步骤
tree.getCellEditor().addCellEditorListener(新CellEditorListener()){
@凌驾
公共作废编辑停止(变更事件e){
//在这里添加您的代码
System.out.println(((DefaultCellEditor)e.getSource()).getCellEditorValue());
}
@凌驾
公共作废编辑已取消(更改事件e){
//在这里也添加您的代码
System.out.println(((DefaultCellEditor)e.getSource()).getCellEditorValue());
}
});
frame.add(新的JScrollPane(树));
frame.setTitle(“树编辑器示例”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
如果您能更多地解释您的问题或发布一些代码片段,这将非常有用。如果您能更多地解释您的问题或发布一些代码片段,这将非常有用。