require 'java' $music = File.join(ENV["JAVA_HOME"], 'demo\jfc\SwingSet2\src\resources\tree.txt') class TreeDemo include_package 'javax.swing' include_package 'javax.swing.tree' UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel") rescue nil def initialize top = DefaultMutableTreeNode.new("Music") File.open($music).each do |line| type, info = line.chomp.split(' ',2) node = DefaultMutableTreeNode.new(info) case type when 'C' then top.add(category = node) when 'A' then category.add(artist = node) if category when 'R' then artist.add(record = node) if artist when 'S' then record.add(node) if record end end tree = JTree.new(top) tree.editable = true tree.drag_enabled = true frame = JFrame.new("Tree Demo") frame.default_close_operation = JFrame::EXIT_ON_CLOSE frame.setSize(400,300) frame.add(tree) frame.visible = true end end class Application < java.lang.Runnable def run TreeDemo.new end end javax.swing.SwingUtilities.invokeLater(Application.new)