我有一個XML文件,我想在樹中直觀地表示。如果我要這樣做,我不得不使用Jython,並且我們的系統上只有2.5.0版本可用。我沒有Java經驗(並且很難閱讀它),但是有一點Swing經驗(通過Jython),並且聽說我可以用JTree()來實現這一點。我已經看到了一些Java Swing的例子,但是有沒有人知道Jythonic的做法?請注意,我只有一些XML解析器可用 - 我正在使用xml.etree.ElementTree中的一個。是否有Jythonic方式在Swing樹中表示XML文件?
編輯: 我試圖與翠泰伊的例子有點猴子和嘗試這樣的:
from java import awt
from javax import swing
from java.lang import System
from xml.etree import ElementTree
class XmlTreeModel(swing.tree.TreeModel):
def __init__(self, etree):
self.etree = etree
def getRoot(self):
return self.etree.getroot()
def getChildCount(self, object):
return len(object)
def getChild(self, parent, index):
return parent[index]
class Viewer(swing.JFrame):
def __init__(self):
super(Viewer, self).__init__()
def display(self, fileName):
xmlObject = ElementTree.parse(fileName)
xmlTreeModel = XmlTreeModel(xmlObject)
jTree = swing.JTree(xmlTreeModel)
self.contentPane.add(jTree)
self.contentPane.setPreferredSize(awt.Dimension(100, 200))
self.setTitle("Tree")
self.pack()
self.setDefaultCloseOperation(swing.JFrame.DO_NOTHING_ON_CLOSE)
self.windowClosing = self.exit
self.setLocationRelativeTo(None)
self.setVisible(True)
def exit(self, event):
System.exit(0)
if __name__ == "__main__":
viewer = Viewer()
viewer.display('my.xml')
不幸的是,它提出了當它到達self.contentPane.add(xmlTreeModel)
異常,說
TypeError: add(): 1st arg can't be coerced to java.awt.PopupMenu, java.awt.Component
上午我無法簡單地通過將其添加到內容窗格來進行測試?
編輯:它缺少一個JTree。使用此修補程序更新了代碼。
我給了它一個嘗試,並添加了我的問題的代碼。一個快速的異常的谷歌只是返回了很多我不能讀取的Java,你有沒有機會認出它呢? – aeroNotAuto 2012-02-10 09:07:17
JTree使用TreeModel來獲取其數據。 self.contentPane.add(JTree(xmlTreeModel)) – 2012-02-11 06:43:41
哦,這是一個愚蠢的事情錯過。太好了,謝謝! – aeroNotAuto 2012-02-11 17:08:05