将对象添加到目标jpanel,然后更新GUI状态

时间:2019-07-13 19:54:14

标签: java jframe jpanel

因此,我希望创建一个类似于Checker Board的网格,并使对象从一个正方形的瓷砖移动到另一个。无需单击或任何精美的动画,这更多是一种模拟动画,它将自动移动所有零件。

到目前为止,我已经创建了这个具有2d数组JPanel的CheckerBoard类,并且我正在创建开发板并在for循环中输入颜色。一旦创建了板并在GUI上显示它,我就希望一次为每个目标方块中的棋子缓慢添加动画效果。

我该如何定位正方形(JPanel),然后在其上添加图像或图标,然后在GUI上更新屏幕

import java.awt.*;
import javax.swing.*;
public class CheckerBoard
{
    public static void main (String args[])
    {
        int row = 10;
        int col = 10;
        JFrame checkerBoard = new JFrame();
        JPanel[][] panel = new JPanel[row][col];
        checkerBoard.setSize(400,400);
        checkerBoard.setTitle("CheckerBoard");
        checkerBoard.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container pane = checkerBoard.getContentPane();
        pane.setLayout(new GridLayout(row,col));

        createBoard(row, col, panel, pane);

        updateBoard();  //dont know what to do here

        checkerBoard.setVisible(true);
    }

    public static void createBoard(int row, int col, JPanel[][] panel, Container pane) {
        Color checker;
        for (int x = 0; x < row; x++) {
            for (int y = 0; y < col; y++) {
                checker = (x+y) % 2 == 0 ? Color.GRAY : Color.lightGray;
                JPanel currentTile = new JPanel();
                currentTile.setPreferredSize(new Dimension(400/row, 400/col));
                currentTile.setBackground(checker);
                panel[x][y] = currentTile;
                pane.add(panel[x][y]);
            }
        }
    }

    public static void updateBoard() {
       // Dont know what to do here
    }
}

此代码的结果确实可以正确执行检查器模式,但是现在的主要目标是在目标正方形上添加图标或图像,并用板上的新对象更新GUI

0 个答案:

没有答案