JPanel重绘问题
拼图游戏
原样是这个样子的
点击4ROwAndColumn之前是这样的
想要实现的功能是把三行拼图换成4行
点击之后成了这个样子
没有重绘,当我最小化窗口再恢复的时候就可以了,不知道原因,因为我已经在点击事件方法里面添加了重绘代码(repaint())了
部分代码如下
原样是这个样子的

点击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的重绘代码
}
...全文
相关推荐
java-clock:简单实现给jpanel加一个本地钟表图片并在上面画出表针显示时间来练习多线程java
它展示了如何通过在单独线程中定时更新和重绘组件来创建动态的用户界面。同时,这也涉及到Java的图形绘制技术,以及如何与系统时钟同步。
用java编程来回运动的小球
在Java中,通过不断地重绘组件(调用repaint()方法),并在每次重绘时改变小球坐标,就能实现小球的移动。5.
Java中Graphics的paint和repaint方法.pdf
部分重绘:只对需要更新的区域进行重绘,而不是整个组件,提高了效率。需要注意的是,`paint`方法不应该由用户直接调用,因为这可能会导致绘图线程和事件处理线程之间的同步问题。
java创意画板全功能.zip
图像重绘:在Java中,实现图像重绘通常涉及到`java.awt.Graphics`类和`paintComponent()`方法。
Java画图(画一个时钟)
timer = new Timer(1000, e -> panel.repaint());timer.start();```以上代码创建了一个每秒执行一次的定时器,当定时器触发时,`JPanel`会被重绘


Java SE
