[問題]用XML做JTree的listener

看板java作者 (該來的還是跑不掉阿)時間16年前 (2010/02/25 16:12), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/2 (看更多)
之前練習了一個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
JTree tree加上static可以解決錯誤可是該出現的label..
02/25 16:30, 1F
文章代碼(AID): #1BXZ3Z6J (java)
文章代碼(AID): #1BXZ3Z6J (java)