📄 middot.java
字号:
/* * linepanel.java * * Created on 2005年12月10日, 下午6:32 */package painttool;import java.io.*;import java.awt.*;import java.awt.event.*;public class middot { public static int dotnumber=1; public static TextField t1=new TextField(); public static TextField t2=new TextField(); public static TextField t3=new TextField(); public static TextField t4=new TextField(); public static TextField t5=new TextField(); public static Button drawline=new Button("drawline"); public static Button clear=new Button("clear"); public middot() { BorderLayout bl=new BorderLayout(); Button b1=new Button("start-x"); Button b2=new Button("start-y"); Button b3=new Button("end-x"); Button b4=new Button("end-y"); Button b5=new Button("xl"); Panel p=new Panel(); Panel p1=new Panel(); Panel p2=new Panel(); Main.linep.setLayout(new BorderLayout()); Main.linep.add(p,bl.SOUTH); p.setLayout(new GridLayout(1,2)); p.setVisible(true); p1.setVisible(true);p2.setVisible(true); p1.setLayout(new GridLayout(1,2)); p2.setLayout(new GridLayout(2,5)); p.add(p1);p.add(p2); p1.add(drawline);p1.add(clear); p2.add(b1);p2.add(b2);p2.add(b3);p2.add(b4);p2.add(b5); p2.add(t1);p2.add(t2);p2.add(t3);p2.add(t4);p2.add(t5); monitor1 watch=new monitor1(); clear.addActionListener(watch); drawline.addActionListener(watch); Main.linep.addMouseListener(watch); Main.card.show(Main.mainFrame,"second"); Main.card.show(Main.mainFrame,"first"); }}class monitor1 extends Canvas implements MouseListener,ActionListener{ int x1=0,x2=0,y1=0,y2=0; String s1,s2,s3,s4; public void actionPerformed(ActionEvent e) { Graphics g=Main.linep.getGraphics(); if(e.getSource()==linepanel.drawline) //画直线 { if(linepanel.dotnumber==1) { s1=linepanel.t1.getText(); s2=linepanel.t2.getText(); s3=linepanel.t3.getText(); s4=linepanel.t4.getText(); x1=Integer.parseInt(s1); y1=Integer.parseInt(s2); x2=Integer.parseInt(s3); y2=Integer.parseInt(s4); middot(x1,x2,y1,y2); } else { middot(x1,x2,y1,y2); } } if(e.getSource()==linepanel.clear) //清除画板内的点或者直线,以及所获得的坐标 { g.clearRect(0,0,400,350); linepanel.t1.setText(""); linepanel.t2.setText(""); linepanel.t3.setText(""); linepanel.t4.setText(""); linepanel.t5.setText(""); linepanel.dotnumber=1; this.x1=0;this.x2=0; this.y1=0;this.y2=0; } } public void mouseClicked(MouseEvent e) { Graphics g=Main.linep.getGraphics(); if(linepanel.dotnumber<=2) { if(linepanel.dotnumber==1) { x1=e.getX();y1=e.getY(); linepanel.t1.setText(""+e.getX()); linepanel.t2.setText(""+e.getY()); g.drawString("start", e.getX()-20,e.getY()); } if(linepanel.dotnumber==2) { x2=e.getX();y2=e.getY(); linepanel.t3.setText(""+e.getX()); linepanel.t4.setText(""+e.getY()); g.drawString("end", e.getX(),e.getY()); } g.drawLine(e.getX(),e.getY(),e.getX(),e.getY()); linepanel.dotnumber++; } } public void mouseReleased(MouseEvent e){ } public void mousePressed(MouseEvent e){ } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void middot(int x0,int x1,int y0,int y1) { Graphics g=Main.linep.getGraphics(); int a=0,b=0,midx=0,midy=0,delta1=0,delta2=0,d=0,x=0,y=0,yt=0,xt=0; float k=0; linepanel.t5.setText(""+k); if(x1>x0&&y1<y0||x1<x0&&y1>y0) { if(x1<x0&&y1>y0) { midx=x0;midy=y0; x0=x1;y0=y1; x1=midx;y1=midy; } a=y0-y1; b=x1-x0; k=a/b; if(k<1) { d=-2*a+b; delta1=-2*a; delta2=2*(-a+b); x=x0;y=y0; while(x<x1) { if(d<0) { x++;y--; d=delta2+d; } else { x++; d=delta1+d; } g.drawLine(x,y,x,y); } } if(k>=1) { d=-a+2*b; delta1=2*b; delta2=-2*a+2*b; x=x0;y=y0; while(y>y1) { if(d<0) { y--; d=delta1+d; } else { x++;y--; d=delta2+d; } g.drawLine(x,y,x,y); } } } else { if(x1<x0&&y1<y0) { a=y1-y0; b=x0-x1; k=a/b; x=x1; y=y1; yt=y0; xt=x0; } if(x1>x0&&y1>y0) { a=y0-y1; b=x1-x0; k=a/b; x=x0; y=y0; xt=x1; yt=y1; } g.drawLine(x,y,x,y); if(k<-1) { d=a+2*b; delta1=2*b; delta2=2*a+2*b; while(y<yt) { if(d<0) { y++; d=delta1+d; } else { x++;y++; d=d+delta2; } g.drawLine(x,y,x,y); } } if(k>=-1&&k<=0) { d=2*a+b; delta1=2*a; delta2=2*(a+b); while(x<xt) { if(d<0) { x++;y++; d=delta2+d; } else { x++; d=delta1+d; } g.drawLine(x,y,x,y); } } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -