java吧 关注:1,294,626贴子:12,828,278
  • 0回复贴,共1

正在写程序,遇到了拦路虎,故求助:jpanel刷新问题

只看楼主收藏回复

大意是拼图游戏,点击jbutton后互换,可是jpanel刷新不了,求高人不吝赐教。
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*; public class Game extends JPanel implements ActionListener{
private JButton[][] jbKeys;
private boolean[] bool;
private int ran,x,y,xx,yy,extra,xxx,yyy;
int move[][]={{0,1},{0,-1},{1,0},{-1,0}};
int value[][];
public Game(int x,int y){
value=new int[x][y];
this.x=x;this.y=y;
setLayout(new GridLayout(x,y));
jbKeys=new JButton[x][y];
bool=new boolean[x*y];
for (int i=0;i<=x*y-1;i++){
bool[i]=true;
}
for (int i=0;i<=x-1;i++){
for (int j=0;j<=y-1;j++){
do{
ran=(int)(Math.random()*x*y);
}
while (!bool[ran]);
bool[ran]=false;
value[i][j]=ran;
jbKeys[i][j]=new JButton();
add(jbKeys[i][j]);
jbKeys[i][j].setActionCommand(String.valueOf(i*y+x));
if (ran!=0) jbKeys[i][j].setText(String.valueOf(value[i][j]));
else jbKeys[i][j].setText("");
}
}
for (int i=0;i<=x-1;i++){
for (int j=0;j<=y-1;j++){
jbKeys[i][j].addActionListener(this);
}
}
}
public void actionPerformed(ActionEvent e){
extra=Integer.parseInt(e.getActionCommand())/y;
xx=extra/y;
yy=extra%y;
for (int i=0;i<=3;i++){
xxx=xx+move[i][0];
yyy=yyy+move[i][1];
if ((xxx>=0)&&(xxx<=x)&&(yyy>=0)&&(yyy<=y))
if (value[xxx][yyy]==0){
value[xxx][yyy]=value[xx][yy];
value[xx][yy]=0;
jbKeys[xx][yy].setText("");
jbKeys[xxx][yyy].setText(String.valueOf(value[xxx][yyy]));
repaint();
validate();
return;
}
}
}
}


1楼2012-01-07 20:10回复