DefaultMutableTreeNode root = new MyMutableTreeNode(new MyData("ddd",0));
DefaultMutableTreeNode leafnode=new DefaultMutableTreeNode(new MyData("1",1));
root.add(leafnode);
leafnode=new DefaultMutableTreeNode(new MyData("2",1));
root.add(leafnode);
m_treeModel = new MyTreeModel(root);
m_tree = new JTree(m_treeModel);
m_tree.setEditable(true);MyData的定义如下
class MyData extends Object
{
public String m_itemName;
public int m_iType; public MyData(String newString,int iType)
{
m_itemName = newString;
m_iType = iType;
} public String toString()
{
return m_itemName;
}
}
如何实现当编辑节点值回车时修改MyData的m_itemName属性为用户输入的值
大家帮忙看看啊
DefaultMutableTreeNode leafnode=new DefaultMutableTreeNode(new MyData("1",1));
root.add(leafnode);
leafnode=new DefaultMutableTreeNode(new MyData("2",1));
root.add(leafnode);
m_treeModel = new MyTreeModel(root);
m_tree = new JTree(m_treeModel);
m_tree.setEditable(true);MyData的定义如下
class MyData extends Object
{
public String m_itemName;
public int m_iType; public MyData(String newString,int iType)
{
m_itemName = newString;
m_iType = iType;
} public String toString()
{
return m_itemName;
}
}
如何实现当编辑节点值回车时修改MyData的m_itemName属性为用户输入的值
大家帮忙看看啊
解决方案 »
- 求高手讲解下这种题的思路和方法
- 关于java操作visio的例子
- 高手指点!为什么没有import java.lang.*程序也能正常运行
- 离线消息是不是需要保存在专门的表里?
- enableEvents(AWTEvent.WINDOW_EVENT_MASK);
- timer控制FTPClient对象上传下载文件的问题
- 一个简单的问题,高手指教一下。
- 兄弟姐妹们,有知道Jboss最大可以承受的日访问量是多少?硬件:p4 2.4G mem:1G
- 请问:如何设置ableModel中列的宽度??
- 高分求购一个类
- 对 Characer类的digit(char ch, int radix)方法的研究
- 谁有 the thinking in java 第三版的CD源代码呀?谢谢
m_tree.addTreeSelectionListener(this);
public void valueChanged(TreeSelectionEvent e)
{//TreeSelectionListener
DefaultMutableTreeNode node = (DefaultMutableTreeNode)m_tree.getLastSelectedPathComponent(); if (node == null) return; Object nodeInfo = node.getUserObject();
m_textArea.setText(((MyData)nodeInfo).m_itemName+((MyData)nodeInfo).m_iType);
}
在运行过程中编辑修改过的节点报错如下
D:\wsqd\jdk\bin>java SortEditor
java.lang.ClassCastException
at SortEditor.valueChanged(SortEditor.java:131)
at javax.swing.JTree.fireValueChanged(JTree.java:2392)
at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:276
3)
at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTr
eeSelectionModel.java:629)
at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTr
eeSelectionModel.java:1076)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultT
reeSelectionModel.java:287)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(DefaultTr
eeSelectionModel.java:170)
at javax.swing.JTree.setSelectionPath(JTree.java:1168)
at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(BasicTreeUI.jav
a:2215)
at javax.swing.plaf.basic.BasicTreeUI$MouseHandler.handleSelection(Basic
TreeUI.java:2863)
at javax.swing.plaf.basic.BasicTreeUI$MouseHandler.mousePressed(BasicTre
eUI.java:2824)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:22
2)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:22
1)
at java.awt.Component.processMouseEvent(Component.java:5097)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483
)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3195) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)我该怎么处理节点的编辑消息?
需要自定义一个
class MyTreeModel extends DefaultTreeModel
{
public MyTreeModel(TreeNode newRoot)
{
super(newRoot);
} /**
* Subclassed to message setString() to the changed path item.
*/
public void valueForPathChanged(TreePath path, Object newValue)
{
/* Update the user object. */
DefaultMutableTreeNode aNode = (DefaultMutableTreeNode)path.getLastPathComponent();
MyData sampleData = (MyData)aNode.getUserObject(); sampleData.setString((String)newValue); /* Since we've changed how the data is to be displayed, message
nodeChanged. */
nodeChanged(aNode);
}}
m_treeModel = new MyTreeModel(root);
即可完成对树的编辑功能
结帖