Swing JTtee Example

back to SwingExamples


 1 """
 2 Swing JTree example in Jyhton.
 3 
 4 Sticking with my City theme, this createa a J tree with 2 branches
 5 one with cities starting with M and the other branch with cties starting
 6 with S. This examples using a button event to show the selected city.
 7 
 8 Greg Moore
 9 Sept 2007
 10 """
 11 
 12 from javax.swing import *
 13 from java.awt import *
 14 from javax.swing.tree import DefaultMutableTreeNode
 15 
 16 class Example:
 17 
 18  def __init__(self):
 19  mCitiesData = ['Memphis', 'Melbourne', 'Milan',
 20  'Marrakech', 'Moscow', 'Munich']
 21 
 22  sCitiesData = ['San Francisco', 'Salzburg', 'Santiago',
 23  'Sydney', 'Sandnessjoen', 'Stockholm']
 24 
 25  frame = JFrame("Jython JTree Example")
 26  frame.setSize(400, 350)
 27  frame.setLayout(BorderLayout())
 28 
 29  root = DefaultMutableTreeNode('Cities')
 30  mCities = DefaultMutableTreeNode('Cities starting with M')
 31  sCities = DefaultMutableTreeNode('Cities starting with S')
 32  root.add(mCities)
 33  root.add(sCities)
 34 
 35  #now add the cities starting with M & S
 36  self.addCities(mCities, mCitiesData)
 37  self.addCities(sCities, sCitiesData)
 38  self.tree = JTree(root)
 39 
 40  scrollPane = JScrollPane() # add a scrollbar to the viewport
 41  scrollPane.setPreferredSize(Dimension(300,250))
 42  scrollPane.getViewport().setView((self.tree))
 43 
 44  panel = JPanel()
 45  panel.add(scrollPane)
 46  frame.add(panel, BorderLayout.CENTER)
 47 
 48  btn = JButton('Select', actionPerformed = self.citySelect)
 49  frame.add(btn,BorderLayout.SOUTH)
 50  self.label = JLabel('Select city')
 51  frame.add(self.label, BorderLayout.NORTH)
 52  frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)
 53  frame.setVisible(True)
 54  self.addCities
 55 
 56  def addCities(self, branch, branchData=None):
 57  ''' add data to tree branch
 58  requires branch and data to add to branch
 59  '''
 60  # this does not check to see if its a valid branch
 61  if branchData == None:
 62  branch.add(DefaultMutableTreeNode('No valid data'))
 63  else:
 64  for item in branchData:
 65  # add the data from the specified list to the branch
 66  branch.add(DefaultMutableTreeNode(item))
 67 
 68  def citySelect(self, event):
 69  selected = self.tree.getLastSelectedPathComponent()
 70  #check to make sure a city is selected
 71  if selected == None:
 72  self.label.text = 'No city selected'
 73  else:
 74  self.label.text = str(selected)
 75  #this is more Jythonic then:
 76  #self.label.text = selected.toString()
 77 
 78 if __name__ == '__main__':
 79  Example()

back to SwingExamples

JtreeExample (last edited 2014年05月11日 02:13:18 by AdamBurke )

AltStyle によって変換されたページ (->オリジナル) /