JPanel重绘问题

摆烂办不到 2014-07-08 12:09:35
拼图游戏

原样是这个样子的


点击4ROwAndColumn之前是这样的

想要实现的功能是把三行拼图换成4行


点击之后成了这个样子

没有重绘,当我最小化窗口再恢复的时候就可以了,不知道原因,因为我已经在点击事件方法里面添加了重绘代码(repaint())了


部分代码如下
private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {                                           

if(imagePanel12.getSonPanelNumbers() == 16) {
return;
}

imagePanel12.removePanels();

int[][] tempSequence = new int[][]{{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}, {12, 13, 14, 15}};
imagePanel12.setSequence(tempSequence);
imagePanel12.setSonPanelNumbers(16);
ImagePanel3[][] tempPanels = new ImagePanel3[4][4];

for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
tempPanels[i][j] = new ImagePanel3(imagePanel12);
}// Of for
}// Of for

imagePanel12.setPanels(tempPanels);

((GridLayout) imagePanel12.getLayout()).setRows(4);
((GridLayout) imagePanel12.getLayout()).setColumns(4);
imagePanel12.setSonImage(imagePanel12.getCurrentImage());

imagePanel12.addPanels(tempPanels);

imagePanel12.sonPanelAddImage(imagePanel12.getImages());// 这个方法里面有针对16个子Panel的重绘代码

}
...全文
160 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
摆烂办不到 2014-07-08
  • 打赏
  • 举报
回复
public void sonPanelAddImage(BufferedImage[][] paraImages) {
        for(int i = 0; i < paraImages.length; i++) {
            for(int j = 0; j < paraImages[i].length; j++) {
                panels[i][j].setImage(images[i][j]);//这个方法里面有repaint
                panels[i][j].setCurrentRow(i);
                panels[i][j].setCurrentColumn(j);
                panels[i][j].setImageRow(i);
                panels[i][j].setImageColumn(j);
            }
        }
    }

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧