不知道为什么我这个不管怎么弄都不管用
class MyPlanel extends Panel{
public void paint(Graphics g)
{
super.paint(g);//继承父类的方法
Color whitesonke=new Color(245,245,245);
g.setColor(whitesonke);
g.fill3DRect(50,50,600,600,true);
g.setColor(Color.black);
for(int i=1;i<12;i++)
{
g.drawLine(50,(i+1)*50,650,(i+1)*50);
g.drawLine((i+1)*50,50,(i+1)*50,650);
}
}
}
 class Chest  implements MouseListener
{
int x,y;
Position[][] pos=new Position[11][11];
 Graphics g;
 Map ma;
public void setG(Graphics g) {
this.g = g;
}
public void setM(Map m)
{
ma=m;
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseReleased(MouseEvent e) {
x=e.getX();
 y=e.getY();
 g.setColor(Color.black);
 if(x%25<20&&y%25<20)
 {
 if(x%50<20&&y%50<20)
 {
 pos[x/50][y/50].flag=1;
 g.fillOval((x/50)*50-10,(y/50)*50-10,10,10);
 }
 }

}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub

}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}
}
class Position
{
int flag=0;
int left=0;
int top=0; 
int right=0;
int buttom=0;
}
class Map extends JPanel
{
public void map()
{
MyPlanel mp=new MyPlanel();
  JFrame frame =new JFrame(); 
frame.add(mp);
frame.setSize(800, 800); 
  frame.setVisible(true);
  Graphics g = this.getGraphics();
  Chest chest =new Chest();
  chest.setG(g);
  chest.setM(this);
  this.addMouseListener(chest);
}
}
public class two { public static void main(String[] args) {
Map m=new Map();
m.map();
}
}

解决方案 »

  1.   

    没有加repaint,鼠标释放监听器的最后要让jframe repaint一下,才会显示新的图案。
      

  2.   

    没有加repaint,鼠标释放监听器的最后要让jframe repaint一下,才会显示新的图案。
    但是我在进行调试的时候他根本没有进行getx的步骤,难道问题不是在这里,我才学习java有些不太懂
      

  3.   

    没有加repaint,鼠标释放监听器的最后要让jframe repaint一下,才会显示新的图案。
    但是我在进行调试的时候他根本没有进行getx的步骤,难道问题不是在这里,我才学习java有些不太懂因为你加的地方不对,应该加在jpanel上
      

  4.   


    你的程序毛病很多,数组没初始化,类相互之间数据没有传递,我简单的编写了一个功能还比较单一的只能在棋盘上下黑子的程序,你可以借鉴一下。import java.awt.Color;public class Chest {
    private boolean flag;
    private Color c;

    public Chest() {
    super();
    this.flag = false;
    }
    public boolean isFlag() {
    return flag;
    }
    public void setFlag(boolean flag) {
    this.flag = flag;
    }
    public Color getC() {
    return c;
    }
    public void setC(Color c) {
    this.c = c;
    }}
    import java.awt.Color;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;public class MyMouse implements MouseListener { private int count;
    private static Chest[][] chest = new Chest[19][19];
    private boolean flag = false;
    private boolean doit = false;
    private Color color; public MyMouse() {
    super();
    count = 0;
    for (int i = 0; i < 19; i++) {
    for (int j = 0; j < 19; j++) {
    chest[i][j] = new Chest();
    }
    }
    } public static Chest[][] getChest() {
    return chest;
    } public static void setChest(Chest[][] chest) {
    MyMouse.chest = chest;
    } @Override
    public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stub } @Override
    public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub
    setFlag(true);
    } public boolean isFlag() {
    return flag;
    } public void setFlag(boolean flag) {
    this.flag = flag;
    } public boolean isDoit() {
    return doit;
    } public void setDoit(boolean doit) {
    this.doit = doit;
    } @Override
    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub
    setFlag(false); } @Override
    public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    count++;
    if (flag) {
    // if (count < 2) {
    if (e.getX() > 10 && e.getX() < 390 && e.getY() > 10 && e.getY() < 390) {
    chest[(e.getX() - 10) / 20][(e.getY() - 10) / 20].setFlag(true);
    setDoit(true);
    }
    // }
    }
    setDoit(false); } @Override
    public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub }}
    import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;import javax.swing.JPanel;public class MyPanel extends JPanel {
    private Graphics2D gp;
    private MyMouse mm = new MyMouse();
    private static int radius = 7;
    private Chest[][] chest; MyPanel() {
    setBackground(new Color(255, 220, 50));
    addMouseListener(mm);
    chest = mm.getChest(); } public MyMouse getMm() {
    return mm;
    } public void setMm(MyMouse mm) {
    this.mm = mm;
    } @Override
    public void paint(Graphics g) {
    // TODO Auto-generated method stub
    super.paint(g);
    gp = (Graphics2D) g;
    BasicStroke stroke = new BasicStroke(2.0f);
    gp.setStroke(stroke);
    gp.setColor(Color.black);
    for (int i = 1; i < 20; i++) {
    gp.drawLine(i * 20, 20, i * 20, 380);
    gp.drawLine(20, 400 - i * 20, 380, 400 - i * 20);
    }
    drawLine(80, 80);
    drawLine(80, 320);
    drawLine(320, 80);
    drawLine(320, 320);
    drawChest(chest);
    doit(); } public void drawLine(int x, int y) {
    gp.drawLine(x - 10, y - 5, x - 5, y - 5);
    gp.drawLine(x - 5, y - 10, x - 5, y - 5);
    gp.drawLine(x - 10, y + 5, x - 5, y + 5);
    gp.drawLine(x - 5, y + 10, x - 5, y + 5);
    gp.drawLine(x + 5, y - 10, x + 5, y - 5);
    gp.drawLine(x + 5, y + 10, x + 5, y + 5);
    gp.drawLine(x + 10, y - 5, x + 5, y - 5);
    gp.drawLine(x + 10, y + 5, x + 5, y + 5);
    } public void drawChest(Chest[][] chest) {
    for (int i = 0; i < 19; i++) {
    for (int j = 0; j < 19; j++) {
    if (chest[i][j].isFlag()) {
    gp.setColor(chest[i][j].getC());
    gp.fillOval((i + 1) * 20 - radius, (j + 1) * 20 - radius, 2 * radius, 2 * radius);
    }
    }
    }
    } public void doit() {
    repaint();
    }}
    import javax.swing.JFrame;public class MyJframe extends JFrame { void initialize() {
    MyPanel mp = new MyPanel();
    setSize(410, 430);
    add(mp);
    setVisible(true);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    while(mp.getMm().isDoit()) {
    mp.doit();
    }
    }}
    public class test { public static void main(String[] args) {
    // TODO Auto-generated method stub
    new MyJframe().initialize(); }}
      

  5.   

    修改一下,实现黑白轮流下的效果
    import java.awt.Color;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;public class MyMouse implements MouseListener { private int count;
    private static Chest[][] chest = new Chest[19][19];
    private boolean flag = false;
    private boolean doit = false;
    private Color color; public MyMouse() {
    super();
    count = 0;
    for (int i = 0; i < 19; i++) {
    for (int j = 0; j < 19; j++) {
    chest[i][j] = new Chest();
    }
    }
    } public static Chest[][] getChest() {
    return chest;
    } public static void setChest(Chest[][] chest) {
    MyMouse.chest = chest;
    } @Override
    public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stub } @Override
    public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub
    setFlag(true);
    } public boolean isFlag() {
    return flag;
    } public void setFlag(boolean flag) {
    this.flag = flag;
    } public boolean isDoit() {
    return doit;
    } public void setDoit(boolean doit) {
    this.doit = doit;
    } @Override
    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub
    setFlag(false); } @Override
    public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    count++;
    if (flag) {
    if (e.getX() > 10 && e.getX() < 390 && e.getY() > 10 && e.getY() < 390) {
    chest[(e.getX() - 10) / 20][(e.getY() - 10) / 20].setFlag(true);
    if (count%2!=0) {
    chest[(e.getX() - 10) / 20][(e.getY() - 10) / 20].setC(Color.white);
    }else {
    chest[(e.getX() - 10) / 20][(e.getY() - 10) / 20].setC(Color.black);
    }
    setDoit(true);
    }
    }
    setDoit(false);
    } @Override
    public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub }}