作者foxenangel (该来的还是跑不掉阿)
看板java
标题[问题]用XML做JTree的listener
时间Thu Feb 25 16:12:16 2010
之前练习了一个JTree,选到哪个节点就会在下面的Label显示节点名称
後来我又写了一个用SAX读XML档,然後把它做成JTree。想请问的是XML的这个程式,
他的listener跟第一个一样用TreeSelectionListener是正确的吗?
我把输入XML档案名称的部份写在args[0]里面(VSX2Test.java),然後要加上listener
的时候 tree.addTreeSelectionListener(this) (VSX2.java) ,错误讯息显示
找不到tree
我尝试把addTreeSelectionListener写在VSX2Test.java里面,错误讯息却显示
non-static variable tree cannot be referenced from a static context
试了好久都搞不出来,麻烦指教,谢谢
以下为程式码片段
VSX2.java
public class VSX2 extends JFrame
{
JLabel messageLabel;
JTree tree;
public TreeModel parse(String filename)
{
SAXParserFactory factory=SAXParserFactory.newInstance();
}
......
public void init()
{
SimpleTreeHandler stHandler=new SimpleTreeHandler();
tree.addTreeSelectionListener(stHandler);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
messageLabel=new JLabel("Nothing selected");
add(messageLabel,BorderLayout.SOUTH);
}
public class SimpleTreeHandler implements TreeSelectionListener
{
public void valueChanged(TreeSelectionEvent event)
{}
}
==========================================================================
VSX2Test.java
public class VSX2Test
{
public static void main(String args[])
{
JFrame frame=new JFrame("VSX Test");
VSX2 parser=new VSX2();
tree=new JTree(parser.parse(args[0]));
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
parser.init();
frame.getContentPane().add(new JScrollPane(tree));
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.138.152.25
※ 编辑: foxenangel 来自: 140.138.152.25 (02/25 16:12)
※ 编辑: foxenangel 来自: 140.138.152.25 (02/25 16:23)
1F:→ foxenangel:JTree tree加上static可以解决错误可是该出现的label.. 02/25 16:30