生存期问题
你定义的X1……等都是在他们所在的程序块中生存,出去了就无效了
就是说:X2,Y2只在
public void mouseClicked(MouseEvent e)
{
 int X2 = e.getX();
 int Y2 = e.getY();

}
有效,其他的地方就相当于没有定义。

解决方案 »

  1.   

    520zju(生活咖啡) :
    你说的我明白,为这个问题我已经花了一晚的时间,发了4个帖子了,还是没有得到解答。。
    到底应该怎么弄呢?
    其实就是实现一个很简单的功能:
    鼠标点一下,显示一个带颜色的点,就这么简单。
      

  2.   

    把X1,Y1,X2,Y2定义成Frame类的成员,同时让Frame类实现鼠标事件接口,取消内部类机制。
    在Frame类的构造函数中注册鼠标监听器:addMouseListener(this);
    然后实现鼠标接口的方法。这样有一点问题,就是你必须实现鼠标事件的全部接口。
    你的问题也只能这样解决了。
    先试试吧,有问题再来问。
      

  3.   

    tonygtonyg;
    你好,昨天晚上真是不好意思,我没有看到你的源码,只是觉得这个功能不是很难,就顺着思路说,谁知道越帮越忙,所以我自己写了一遍,现在将代码写在下面,作为参考。
    为了能将所画的圆能看得清楚,我把半径设为10。(有时候点击鼠标没有显示,是因为产生的颜色刚好是白色,并且几率好像还很高,你可以将背景色设为黑色)
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.Random;class colorPanel extends JPanel 
    {
    public colorPanel()
    {
    addMouseListener(new MouseAdapter()
    {
    public void mouseClicked(MouseEvent e)
    {
        int X = e.getX();
        int Y = e.getY();
        Random colorrandom = new Random();
                 int r = (int)(255 * colorrandom.nextDouble());
        int g = (int)(255 * colorrandom.nextDouble());
        int b = (int)(255 * colorrandom.nextDouble());     Graphics ghc = getGraphics();
        ghc.setColor(new Color(r,g,b));
        ghc.fillOval(X - 10,Y - 10,10,10);
    }
    });
    }
    };class colorFrame extends JFrame
    {
    public colorFrame()
    {
    Toolkit tk = Toolkit.getDefaultToolkit();
    Dimension d = tk.getScreenSize();
    setTitle("Random Color Test!");
    setSize( d.width / 2, d.height / 2 );//设置Frame大小为屏幕大小的四分之一
    setLocation( d.width / 4, d.height / 4 );//使Frame居中显示
    addWindowListener( new WindowAdapter()
    {   
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    }
    );
    Container contentPane = getContentPane();
    contentPane.add( new colorPanel());
    }
    };public class colorTest 
    {
    public static void main(String[] args) 
    {
    JFrame frame = new colorFrame();
    frame.show();
    }
    }