在这两个事件响应后使用gamePanel.init()和gamePanel.repaint()都不行,请求各位大佬帮忙,非常感激,本人编程小白,恳请各位大佬能讲的详细易懂。
GamePanel部分:
public class GamePanel extends JPanel implements MouseListener {
private Cell[] cells=new Cell[MainFrame.diff*MainFrame.diff]; //创建单元图片数组
private Cell cellBlack=null; //空白
public GamePanel(){ //构造方法
super();
setLayout(null); //设置空布局
init(); //初始化游戏
}
public void init(){
int x=0;
int y=0;
int w=480/MainFrame.diff;
int h=480/MainFrame.diff;
BufferedImage src=null;
BufferedImage newpic=null;
try {
src=ImageIO.read(new File("pic\\"+MainFrame.pic+".jpg"));
} catch (IOException e) {
System.out.println(e);
}
int num=0; //图片序号
Icon icon=null; //图片对象
Cell cell=null; //单元图片对象
for(int i=0;i<MainFrame.diff;i++){ //循环行
for(int j=0;j<MainFrame.diff;j++){ //循环列
num=i*MainFrame.diff+j; //计算图片序号
x=j*(480/MainFrame.diff);
y=i*(480/MainFrame.diff);
newpic=src.getSubimage(x, y, w, h);
if(num+1==MainFrame.diff*MainFrame.diff){
icon=new ImageIcon("pic\\"+(num+1)+".jpg"); //获取空白图片
}else{
icon=new ImageIcon(newpic);
}
cell=new Cell(icon,num); //实例化单元图片对象
cell.setLocation(j*Cell.IMAGEWIDTH, i*Cell.IMAGEWIDTH); //设置单元图片的坐标
cells[num]=cell; //将单元图片储存到单元图片数组中
}
}
for(int i=0;i<cells.length;i++){
this.add(cells[i]); //向面板中添加所有单元图片
}
}
MainFrame的响应事件:
difficulty.addActionListener(new ActionListener(){
public void actionPerformed(final ActionEvent e){
System.out.println(difficulty.getSelectedItem().toString());
if(difficulty.getSelectedItem().toString().equals("简单")){
diff=3;
}else if(difficulty.getSelectedItem().toString().equals("困难")){
diff=4;
}else{
diff=5;
}
System.out.println(diff);
}
});
randompic.addActionListener(new ActionListener(){ //注册事件
public void actionPerformed(final ActionEvent e){
Random rand=new Random();
pic=rand.nextInt(5);
System.out.println(pic);
//gamePanel.init();
//gamePanel.repaint();
}
});