[問題]用XML做JTree的listener
之前練習了一個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)
→
02/25 16:30, , 1F
02/25 16:30, 1F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):