不知道为什么我这个不管怎么弄都不管用
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();
}
}
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();
}
}
但是我在进行调试的时候他根本没有进行getx的步骤,难道问题不是在这里,我才学习java有些不太懂
但是我在进行调试的时候他根本没有进行getx的步骤,难道问题不是在这里,我才学习java有些不太懂因为你加的地方不对,应该加在jpanel上
你的程序毛病很多,数组没初始化,类相互之间数据没有传递,我简单的编写了一个功能还比较单一的只能在棋盘上下黑子的程序,你可以借鉴一下。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(); }}
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 }}