在鼠标按下的两点之间画一条线
class Mouse extends JFrame{
      int x,y,x1,y1,test;
     JPanel p=new JPanel();
   Mouse(){
     this.getContentpane.add(p);
    p.addMouseListener(new MousePress());
   this.setSize(500,500);
this.show();
}
class MousePress extends MouseAdapter{
public void mousePressed(mouseEvent e){
      test++;
      x=e.getX();
      y=e.getY();
if(test%2==0)
      repaint();
}
}
public void paintComponent(Graphics g){
      super.paintComponent();
      g.drawLine(x,y,x1,y1);
}
}
有哪位大哥帮我改改

解决方案 »

  1.   

    目测了一下,你的这个划线程序只设置了开始的点x,y但是没有设置结束的点x1,y1
    你给它们都弄好了就差不多了,还有,你让test单纯的++也有点太……
    还不如让test 就为 0 或者 1 这两个值来的好……
      

  2.   

    再改了一下。。还是有错。。哪位帮帮我。。题目:在鼠标按下的两点之间画一条线
    import java.awt.*;
    import java.awt.event.*;
    class Mouse extends Frame{
           int x,y,x1,y1;
          int test=2;
          Panel p=new Panel();
         Mouse(){
              this.add(p);
         p.addMouseListener(new MousePress());
           this.setSize(400,400);
         this.show();
    }
    private class MousePress extends MouseAdapter{
        public void mousePressed(MouseEvent e){
             if(test%2==0){
             x=e.getX();
             y=e.getY();
    }
        else{
              x1=e.getX();
             y1=e.getY();
             draw();
    }
    }
    }
    public void draw(){
    Graphics g=this.getGraphics();
           g.drawLine(x,y,x1,y1);
    }
    public static void main(String[] args){
            new Mouse();
    }
    }
    如果还不行。。哪位大哥能帮我做一下。。让我参考。。在下感激不尽啊~!
      

  3.   

    弄成一个,不过第一个第一次按下就固定了,你也可以继续按照你的意思修改。
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class DrawLine extends JFrame {
    private int x1,y1,x2,y2;
    private int flag;
    private JLabel status;

    public DrawLine()
    {
    super("Drawing line between to points:");
    flag=0;
    status=new JLabel();
    getContentPane().add(status,BorderLayout.SOUTH);
    addMouseListener(
    new MouseAdapter()
    {
    public void mousePressed(MouseEvent e)
    {
     if(flag==0)
      {
              x1=e.getX();
              y1=e.getY();
              flag=1;
              status.setText("["+x1+","+y1+"]"+"["+x2+","+y2+"]");
                      return;
             
      }
           if(flag==1)
           {
               x2=e.getX();
                 y2=e.getY();
                 draw();
              }
              status.setText("["+x1+","+y1+"]"+"["+x2+","+y2+"]");

    }
    });
    setSize(400,165);
    show();
    }

    public void draw()
    {
         Graphics g=this.getGraphics();
            g.drawLine(x1,y1,x2,y2);
        }
        
        public static void main(String args[])
        {
         DrawLine app=new DrawLine();
         app.addWindowListener(
         new WindowAdapter()
         {
         public void windowClosing(WindowEvent e)
         {
         System.exit(0);
         }
         }
         );
        }
       }
      

  4.   

    那个status是用来测试的,没什么其他用途,我是java新手,只能弄成这样了。
      

  5.   

    新版本:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class DrawLine extends JFrame {
    private int x1,y1,x2,y2;
    private int flag;
    private JLabel status;

    public DrawLine()
    {
    super("Drawing line between to points:");
    flag=0;
    status=new JLabel();
    getContentPane().add(status,BorderLayout.SOUTH);
    addMouseListener(
    new MouseAdapter()
    {
    public void mousePressed(MouseEvent e)
    {
     if(flag==0)
      {   repaint();
              x1=e.getX();
              y1=e.getY();
              flag=1;
              status.setText
              ("["+x1+","+y1+"]"+"["+x2+","+y2+"]");
                      return;
             
      }
           if(flag==1)
           {   
               x2=e.getX();
                 y2=e.getY();
                 draw();
                     flag=0;
              }
              status.setText
              ("["+x1+","+y1+"]"+"["+x2+","+y2+"]");

    }
    });
    setSize(400,165);
    show();
    }

    public void draw()
    {
         Graphics g=this.getGraphics();
            g.drawLine(x1,y1,x2,y2);
        }
        
        public static void main(String args[])
        {
         DrawLine app=new DrawLine();
         app.addWindowListener(
         new WindowAdapter()
         {
         public void windowClosing(WindowEvent e)
         {
         System.exit(0);
         }
         }
         );
        }
       }
      

  6.   

    再加个mouseMoved事件,效果会好一点