ASTFrame.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:2k
源码类别:

编译器/解释器

开发平台:

Others

  1. package antlr.debug.misc;
  2. /* ANTLR Translator Generator
  3.  * Project led by Terence Parr at http://www.jGuru.com
  4.  * Software rights: http://www.antlr.org/RIGHTS.html
  5.  *
  6.  * $Id: //depot/code/org.antlr/release/antlr-2.7.0/antlr/debug/misc/ASTFrame.java#1 $
  7.  */
  8. import antlr.*;
  9. import antlr.collections.AST;
  10. import java.awt.*;
  11. import java.awt.event.*;
  12. import javax.swing.*;
  13. import javax.swing.event.*;
  14. import javax.swing.tree.*;
  15. public class ASTFrame extends JFrame {
  16.   // The initial width and height of the frame
  17.   static final int WIDTH = 200;
  18.   static final int HEIGHT = 300;
  19.   class MyTreeSelectionListener 
  20.   implements TreeSelectionListener {
  21. public void valueChanged (TreeSelectionEvent event) {
  22.   TreePath path = event.getPath();
  23.   System.out.println ("Selected: " + 
  24. path.getLastPathComponent());
  25.   Object elements[] = path.getPath();
  26.   for (int i=0; i<elements.length; i++) {
  27. System.out.print ("->" + elements[i]);
  28.   }
  29.   System.out.println ();
  30. }
  31.   }
  32. public ASTFrame(String lab, AST r) {
  33. super(lab);
  34. // Create the TreeSelectionListener
  35. TreeSelectionListener listener = new MyTreeSelectionListener();
  36. JTreeASTPanel tp = new JTreeASTPanel(new JTreeASTModel(r), null);
  37. Container content = getContentPane();
  38. content.add(tp, BorderLayout.CENTER);
  39. addWindowListener(new WindowAdapter() {
  40. public void windowClosing(WindowEvent e) {
  41. Frame f = (Frame) e.getSource();
  42. f.setVisible(false);
  43. f.dispose();
  44. // System.exit(0);
  45. }
  46. });
  47. setSize(WIDTH, HEIGHT);
  48. }
  49.   public static void main(String args[]) {
  50. // Create the tree nodes
  51. ASTFactory factory = new ASTFactory();
  52. CommonAST r = (CommonAST)factory.create(0, "ROOT");
  53. r.addChild((CommonAST)factory.create(0, "C1"));
  54. r.addChild((CommonAST)factory.create(0, "C2"));
  55. r.addChild((CommonAST)factory.create(0, "C3"));
  56. ASTFrame frame = new ASTFrame("AST JTree Example", r);
  57. frame.setVisible(true);
  58.   }  
  59. }