📄 tpanel.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package pro;import java.awt.*;import javax.swing.*;/** * * @author Administrator */public class Tpanel extends JPanel { public static String in=""; public J_Tree root; @Override protected void paintComponent(Graphics g){ int n,i1,k=0; double rmark=228,lmark=50,X=rmark; J_Tree p=null,q=null,p1; char[] a1; g.clearRect(0, 0, 500, 500); n=in.length(); if(n==0){} else{ a1=new char[n]; a1[0]=in.charAt(0); p=new J_Tree(a1[0]); q=p;root=p; g.drawOval((int)rmark-10,(int)lmark-10,20,20); g.drawString(""+a1[0],(int)rmark-10+8,(int)lmark-10+15); for(i1=1;i1<n;i1++){ a1[i1]=in.charAt(i1); if(a1[i1]=='+'||a1[i1]=='-'||a1[i1]=='*'||a1[i1]=='/'||a1[i1]=='^'){ q=new J_Tree(a1[i1]); if(p.left==null){ p.left=q; q.parent=p; rmark=rmark/2;lmark=lmark+50;X=X-rmark; g.drawLine((int)(X+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(X+rmark-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark))); g.drawOval((int)X-10,(int)lmark-10,20,20); g.drawString(""+a1[i1],(int)X-10+8,(int)lmark-10+15); } else if(p.right==null){ p.right=q; q.parent=p; rmark=rmark/2;lmark=lmark+50;X=X+rmark; g.drawLine((int)(X-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(X-rmark+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark))); g.drawOval((int)(X-10),(int)lmark-10,20,20); g.drawString(""+a1[i1],(int)(X-10+8),(int)lmark-10+15); } else{ while(p.right!=null){ p1=p; p=p.parent; if(p1==p.right) X=X-rmark; else X=X+rmark; lmark=lmark-50; rmark=rmark*2; } p.right=q; q.parent=p; rmark=rmark/2;lmark=lmark+50;X=X+rmark; g.drawLine((int)(X-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(X-rmark+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark))); g.drawOval((int)(X-10),(int)lmark-10,20,20); g.drawString(""+a1[i1],(int)(X-10+8),(int)lmark-10+15); } p=q; } else{ q=new J_Tree(a1[i1]); if(p.left==null){ rmark=rmark/2;lmark=lmark+50;X=X-rmark;if(rmark<8)k=1; g.drawOval((int)X-10,(int)lmark-10,20,20); g.drawString(""+a1[i1],(int)X-10+8,(int)lmark-10+15); g.drawLine((int)(X+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(X+rmark-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark))); p.left=q; X=X+rmark;rmark=rmark*2;lmark=lmark-50; } else if(p.right==null){ rmark=rmark/2;lmark=lmark+50;X=X+rmark;if(rmark<8)k=1; g.drawOval((int)(X-10),(int)lmark-10,20,20); g.drawString(""+a1[i1],(int)(X-10+8),(int)lmark-10+15); p.right=q; g.drawLine((int)(X-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(X-rmark+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark))); X=X-rmark;rmark=rmark*2;lmark=lmark-50; } else{ while(p.right!=null){ p1=p; p=p.parent; if(p1==p.right) X=X-rmark; else X=X+rmark; lmark=lmark-50; rmark=rmark*2; } p.right=q; rmark=rmark/2;lmark=lmark+50;X=X+rmark;if(rmark<8)k=1; g.drawOval((int)(X-10),(int)lmark-10,20,20); g.drawString(""+a1[i1],(int)(X-10+8),(int)lmark-10+15); p.right=q; g.drawLine((int)(X-rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-500/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(X-rmark+rmark*10/java.lang.Math.sqrt(2500+rmark*rmark)), (int)(lmark-50+500/java.lang.Math.sqrt(2500+rmark*rmark))); X=X-rmark;rmark=rmark*2;lmark=lmark-50; } } } if(k==1){ g.clearRect(0, 0, 456, 800); g.drawString("树的深度大于5,本软件暂不支持", 150, 200); } } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -