Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package treePainter;
- import java.awt.EventQueue;
- import java.awt.Graphics;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import java.awt.BorderLayout;
- import java.awt.Toolkit;
- import javax.swing.JLabel;
- import javax.swing.JTextField;
- import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;
- import javax.swing.JButton;
- import java.awt.event.ActionListener;
- import java.awt.event.ActionEvent;
- class TreeNode {
- int data;
- TreeNode left, right;
- static int maxDepth;
- public TreeNode(int d) {
- data = d;
- left = right = null;
- }
- public TreeNode(int d, TreeNode l, TreeNode r) {
- data = d;
- left = l;
- right = r;
- }
- public static void printTree(TreeNode node) {
- if (node != null) {
- printTree(node.left);
- System.out.println(node.data);
- printTree(node.right);
- }
- }
- public static TreeNode insertTree(TreeNode node, int d) {
- TreeNode last=null;
- int depth=0;
- while (node!=null) {
- last = node;
- if (d>node.data) node=node.right;
- else if (d<node.data) node=node.left;
- else return null;
- if (++depth>maxDepth) maxDepth=depth;
- }
- TreeNode newnode = new TreeNode(d);
- if (last!=null) {
- if (d>last.data) last.right=newnode;
- else last.left = newnode;
- }
- return newnode;
- }
- }
- public class Main {
- private JFrame frmTreePainter;
- private JTextField textField;
- public int levels;
- class painter extends JPanel {
- void drawTree(TreeNode node, Graphics g, int x, int y, int level) {
- if (level > 0 && node!=null) {
- int d=10 * (1 << level);
- drawTree(node.left, g, x - d, y + 20, level - 1);
- g.drawOval(x, y, 15, 15);
- g.drawString(""+node.data, x, y+10);
- drawTree(node.right, g, x + d, y + 20, level - 1);
- }
- }
- @Override
- public void paint(Graphics g) {
- // TODO Auto-generated method stub
- super.paint(g);
- g.drawLine(0, 0, 100, 100);
- drawTree(tree, g, getWidth()/2, 0, tree.maxDepth+1);
- }
- }
- /**
- * Launch the application.
- */
- public static void main(String[] args) {
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- try {
- Main window = new Main();
- window.frmTreePainter.setVisible(true);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- /**
- * Create the application.
- */
- public Main() {
- initialize();
- }
- /**
- * Initialize the contents of the frame.
- */
- TreeNode tree;
- private void initialize() {
- frmTreePainter = new JFrame();
- frmTreePainter.setIconImage(Toolkit.getDefaultToolkit()
- .getImage(Main.class.getResource("/javax/swing/plaf/basic/icons/image-delayed.png")));
- frmTreePainter.setTitle("Tree painter");
- frmTreePainter.setBounds(100, 100, 450, 300);
- frmTreePainter.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- JPanel panel = new JPanel();
- frmTreePainter.getContentPane().add(panel, BorderLayout.NORTH);
- JLabel lblNewLabel = new JLabel("Depth:");
- panel.add(lblNewLabel);
- textField = new JTextField();
- textField.setText("5");
- panel.add(textField);
- textField.setColumns(10);
- JButton btnPaintIt = new JButton("Paint it!");
- btnPaintIt.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent arg0) {
- System.out.println("You clicked on me!!");
- String number = textField.getText();
- levels = Integer.parseInt(number);
- TreeNode t=TreeNode.insertTree(tree, levels);
- if (tree==null) tree=t;
- frmTreePainter.repaint();
- System.out.println("Number is=" + number);
- }
- });
- panel.add(btnPaintIt);
- painter panel_1 = new painter();
- frmTreePainter.getContentPane().add(panel_1, BorderLayout.CENTER);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement