你这个程序怎么没有事件处理类啊
你用这个简单些

解决方案 »

  1.   

    以下程序不知道是不是你要求得,试试把,此外你用得事件处理方法已经过时,建议使用新得委托事件模型来处理,见第一个程序。1、applet独立出来
    //Applet 放置一个button和画线得panel
    import java.awt.Graphics;
    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.*;public class DrawApplet extends Applet implements ActionListener{
    DrawLine panel;
    Button line;
        public void init(){
         panel=new DrawLine();
         line=new Button("Start Line");
        
         setLayout(new BorderLayout());
         add(line,"North");
         add(panel);
         line.addActionListener(this);
        }
        
        public void actionPerformed(ActionEvent e){
         //根据panel中得draw标记判断是否画线
         if(panel.draw==true){
         panel.draw=false;
         line.setLabel("Start Line");
         }
         else{
         line.setLabel("Stop Line");
         panel.draw=true;
         }
        }
    }2、画线得 panel
    import java.awt.Graphics;
    import java.awt.Point;
    import java.awt.Event;
    //import java.applet.Applet;
    import java.awt.*;public class DrawLine extends Panel{
        final int MaxLines = 20;
        int CurrentLines = 0;
        Point LineStarts[] = new Point[MaxLines];
        Point LineEnds[] = new Point[MaxLines];
        Point StartPoint, CurrentPoint;
        String CurrentMessage = "";
        
        public boolean draw=false;  //是否画线得标记(根据标记决定是否响应事件)
      
        
        public boolean mouseDown(Event evt, int x, int y)   {
        if(draw==true){
            if (CurrentLines < MaxLines)    {
                StartPoint = new Point(x, y);
                CurrentPoint = new Point(x, y);
                CurrentMessage = "线段: (" + x + ", " + y + ")"
                                    + " - (" + x + ", " + y + ")";
                System.out.println("线段开始位置: (" + x + ", " + y + ")");
                repaint();
            }
            else
                System.out.println("太多线段了絬琿... ");
    }
            return true;
        }    public boolean mouseUp(Event evt, int x, int y)   {
         if(draw==true)  //draw为true才响应,下同
            if (CurrentLines < MaxLines)    {
                CurrentPoint = new Point(x, y);
                LineStarts[CurrentLines] = StartPoint;
                LineEnds[CurrentLines ++] = CurrentPoint;
                System.out.println("线段结束位置: (" + x + ", " + y + ")");
                StartPoint = null;
                CurrentPoint = null;
                repaint();
            }
            return true;
        }    public boolean mouseDrag(Event evt, int x, int y)   {
         if(draw==true);
            if (CurrentLines < MaxLines)    {
                CurrentPoint = new Point(x, y);
                CurrentMessage = "线段: (" + StartPoint.x + ", "
                    + StartPoint.y + ")" + " - (" + x + ", " + y + ")";
                repaint();
            }
            return true;
        }    public boolean mouseMove(Event evt, int x, int y)   {
         if(draw==true){
            CurrentMessage = "你把鼠标移到 (" + x + ", " + y + ") ";
            repaint();}
            return true;
        }    public void paint(Graphics g)   {
            int i;
      
            g.drawString(CurrentMessage, 5, 15);
            //画出线段 礶絬琿
            for (i = 0;i < CurrentLines;i ++)
                g.drawLine(LineStarts[i].x, LineStarts[i].y,
                    LineEnds[i].x, LineEnds[i].y);        if (StartPoint != null)
                g.drawLine(StartPoint.x, StartPoint.y,
                    CurrentPoint.x, CurrentPoint.y);
        }
    }