import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyMouseAdapter{
  public static void main(String args[]) {
    new MyFrame("drawing...");
  }
}class MyFrame extends Frame {
  ArrayList points = null;
  MyFrame(String s) {
    super(s);
    points = new ArrayList(); 
    setLayout(null);
    setBounds(300,300,400,300); 
    this.setBackground(new Color(204,204,255));
    setVisible(true);
    this.addMouseListener(new Monitor());
}

public void paint(Graphics g) {
    Iterator i = points.iterator();
    while(i.hasNext()){
      Point1 p = (Point1)i.next();
      g.setColor(Color.BLUE);
      g.fillOval((int)p.x,(int)p.y,10,10);
    }
  }
  
  public void addPoint(Point1 p){
    points.add(p);
  }
}class Monitor extends MouseAdapter {
  public void mousePressed(MouseEvent e) {
    MyFrame f = (MyFrame)e.getSource();
    f.addPoint(new Point1(e.getX(),e.getY()));
    f.repaint();
  }
}class Point1 extends Point
{
private static int x,y;
Point1(int x,int y) {
this.x = x;
this.y = y;
}
}由于在pOint中x,y是private的,不能访问,可是我设置成static之后还是不行,看哪个大侠能帮忙解决一下,我是新手,所以多多帮忙。。

解决方案 »

  1.   

    看来你还没有理解 public protected private。
      

  2.   

    把这个变量写成bean的形式,添加public的set和get方法就好了
      

  3.   

                   public   protected    default(friendly)    private
    任何类           可以访问   
    子类             可以访问   可以访问      
    同一包下的类     可以访问   可以访问      可以访问                  
    自己或内部类     可以访问   可以访问      可以访问                 可以访问
      

  4.   

    把这个变量写成bean的形式,添加public的set和get方法就好了
      

  5.   

    是private的通过set和get方法就好了!
      

  6.   

    private的属性只能在本类里访问。如果在其它的类里也要访问,则只有通过其它的方法。如提供公共的setter方法,getter方法。
      

  7.   

    这个问题很常见,几乎所有的项目,在编写类的时候,成员变量都会设置成private,然后使用public的set和get方法来分别赋值和取值。private只允许该类内部访问,而不管是否是static的。static是指这是类变量,可以为这个类以及它的每个实例都取得,相当于一个公用部分。你的Point1 的父类是Point,其实Point已经包含了getX和getY的方法,可以直接使用的,返回值是double。
      

  8.   

    我知道Point中已经含有get方法了,可是我在编译过程中老是提示g.fillOval((int)p.x,(int)p.y,10,10);这句话有错误,将point方法实现后重写还是有问题!我希望哪位大侠告诉我怎么使用才能使p.x和p.y不报错,谢谢了!