看图 右边的节点属性怎么保存显示到面板上

t50367457 2010-07-05 09:10:19

通过dom4j解析xml文件 通过监听器将节点的所有属性和值(有很多个属性以及属性的值一起打印到面板上)打印到面板上。。。孙节点的属性怎么获得。。。。通过迭代器只能获得父节点和子节点的属性。。。。一到孙节点就报错。。
错误是:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at copyTree.CopyMainFrame$1.valueChanged(CopyMainFrame.java:102)
at javax.swing.JTree.fireValueChanged(Unknown Source)
at javax.swing.JTree$TreeSelectionRedirector.valueChanged(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(Unknown Source)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(Unknown Source)student

at javax.swing.JTree.setSelectionPath(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
...全文
233 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
t50367457 2011-02-11
  • 打赏
  • 举报
回复
东方絜烁 2011-02-10
  • 打赏
  • 举报
回复
不知道,
t50367457 2010-07-08
  • 打赏
  • 举报
回复
private JTextArea jtext;
private JTextArea jText;
private JTextArea contentText;/**/
//private List<Attribute> listName=new ArrayList<Attribute>();
//private List<Attribute> listValue=new ArrayList<Attribute>();
private String [] str;//保存属性
private String [] string;//保存属性值
private int a=0;//保存属性的多少
public void panelInit(){
JScrollPane jScrollPane=new JScrollPane();
//final JPanel westPane=new JPanel();
jScrollPane.setPreferredSize(new Dimension(200,400));
jScrollPane.setBackground(Color.white);
getContentPane().add(jScrollPane, BorderLayout.WEST);
File file=this.getFirstXML();
final Document doc=XmlFileAction.getDocument(file);
XmlFileAction.getDocumentInfo(doc);
final JTree jTree=new JTree(XmlFileAction.rootNode);

jScrollPane.add(jTree);
jScrollPane.setViewportView(jTree);
jTree.addTreeSelectionListener(new TreeSelectionListener(){//监听器
@Override
public void valueChanged(TreeSelectionEvent e) {
// TODO Auto-generated method stub
DefaultMutableTreeNode node=(DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
Object nodeInfo=node.getUserObject();//获得点击节点的详细内容
System.out.println(nodeInfo);
Element element=doc.getRootElement();
if(nodeInfo.equals(element.getName())){
List attrList=element.attributes();
for(int i=0;i<attrList.size();i++){
Attribute attribute=(Attribute)attrList.get(i);
str[i]=attribute.getName();
string[i]=attribute.getValue();
a=attrList.size();
/*jText.setText(str[i]);
contentText.setText(string[i]); /**/
System.out.println(str[i]+"="+string[i]);
}
}else {
List list=doc.selectNodes(nodeInfo.toString());
a=list.size();
for(Iterator it=list.iterator();it.hasNext();){
Attribute attribute=(Attribute)it.next();
/*jText.setText(attribute.getName());
contentText.setText(attribute.getText());/**/
}
}
}
});
JPanel centerPane=new JPanel();//第二个面板..
centerPane.setPreferredSize(new Dimension(200,400));
centerPane.setBackground(Color.gray);
getContentPane().add(centerPane,BorderLayout.CENTER);

JPanel eastPane=new JPanel();//第三个面板。。
eastPane.setPreferredSize(new Dimension(230,400));
eastPane.setBackground(Color.white);
getContentPane().add(eastPane, BorderLayout.EAST);
eastPane.setLayout(null);
eastPane.setLayout(new BorderLayout());
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(1,2));
panel.add(new Button("property"));
panel.add(new Button("value"));
panel.setSize(new Dimension(130,50));
eastPane.add("North",panel);

jText=new JTextArea();
contentText=new JTextArea();
JPanel pane=new JPanel();
pane.setLayout(new GridLayout(1,2));
pane.add(jText);
pane.add(contentText);
eastPane.add(pane);/**/

JPanel downPane=new JPanel();//第四个面板
downPane.setPreferredSize(new Dimension(630,130));
downPane.setBackground(Color.BLACK);
getContentPane().add(downPane, BorderLayout.SOUTH);
}
这是我写的代码。。
t50367457 2010-07-08
  • 打赏
  • 举报
回复
现在那个孙节点的报错已经解决。。是用的List list=docment.selectNodes();然后遍历就可以了。。。
现在就剩下一个问题。。
、通过dom4j解析xml文件 通过鼠标监听器将节点的所有属性和值(有很多个属性以及属性的值一起打印到面板上)打印到面板上。。。用什么来保存这些属性并且打印到面板上。。。
tian50367457 2010-07-07
  • 打赏
  • 举报
回复
jtext 是jtextarea的对象
tian50367457 2010-07-07
  • 打赏
  • 举报
回复
jTree.addTreeSelectionListener(new TreeSelectionListener(){//监听器
@Override
public void valueChanged(TreeSelectionEvent e) {
// TODO Auto-generated method stub
DefaultMutableTreeNode node=(DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
Object nodeInfo=node.getUserObject();//获得点击节点的详细内容
System.out.println(nodeInfo);
Element element=doc.getRootElement();

if(nodeInfo.equals(element.getName())){
List attrList=element.attributes();
String [] str=new String[attrList.size()];
String [] string =new String[attrList.size()];
for(int i=0;i<attrList.size();i++){
Attribute attribute=(Attribute)attrList.get(i);
str[i]=attribute.getName();
string[i]=attribute.getValue();
System.out.println(str[i]);
//a=attrList.size();
jText.setText(str[i]);
contentText.setText(string[i]);/**/

/*jText[i].setText(str[i]);
contentText[i].setText(string[i]);/**/
System.out.println(str[i]+"="+string[i]);
}/**/
}else {
List list=doc.selectNodes(nodeInfo.toString());
for(Iterator it=list.iterator();it.hasNext();){
Attribute attribute=(Attribute)it.next();
jText.setText(attribute.getName());
contentText.setText(attribute.getText());/**/
System.out.print(attribute.getName());
String text=attribute.getText();//获取属性value
System.out.print(" "+text);
System.out.println();
}
}
}
});
dr_lou 2010-07-07
  • 打赏
  • 举报
回复
遍历的代码看看。
t50367457 2010-07-07
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
看不见
dr_lou 2010-07-07
  • 打赏
  • 举报
回复
看不见图啊大哥,贴到csdn相册里。
qinglingjian 2010-07-07
  • 打赏
  • 举报
回复
空指针异常??
t50367457 2010-07-05
  • 打赏
  • 举报
回复
这次可以看到了吗。。。
t50367457 2010-07-05
  • 打赏
  • 举报
回复
t50367457 2010-07-05
  • 打赏
  • 举报
回复
leopardaa521 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 t50367457 的回复:]

图片已经贴上去了。。
[/Quote]
还是看不见
t50367457 2010-07-05
  • 打赏
  • 举报
回复
图片已经贴上去了。。
dr_lou 2010-07-05
  • 打赏
  • 举报
回复
无图。请贴到你的csdn相册里。

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧