java 刷新按钮怎么做_如何刷新Java的图像图标按钮

有谁知道如何刷新按钮图像图标?

问题是:

我正在制作一个跳棋游戏,并创建一个GUI.一切都有效,包括AI,除了我在移动后调用我的AI,导致按钮似乎没有检查器.

>单击按钮

>单击有检查器的特定按钮

>点击检查员必须去的下一个地方

>立即致电AI以采取行动.

我的按钮有Checkers图片的ImageIcons,当我点击检查器需要去的下一个地方时,JPanel上的JButton不会在那一刻刷新,而是等到AI移动并完成它的移动,结果是我看不到我的检查员去了哪里.

当3-4一个接一个地调用时,我只看到AI所做的结果移动,但不是我的,因为在它退出implements actionListener之后所有内容都会刷新.

我试着打电话:

重绘();

重新验证();

无效();

在包含按钮的JPanel上.

在步骤4之前,用户可以在AI进行移动之前看到他/她放置了什么.

else

{

//This is where the code starts

if ("White".equals(Red_Or_White.getText()))

{

//Meaning that it is white's turn, then

playerPlaysAMove(x, y, goingToGo_x, goingToGo_y);

}

if ("AI".equals(AI_Enabled.getText()))

{

//AI is enabled

AIMoves(board, "Red");

//the AI needs to play the position as if the AI was a red player,

//because the player must be white

}

}

AI在同一轮中播放,但AI计算大约需要1分钟,此时,玩家的移动在AI播放之前是不可见的,因为它在退出actionListener之后更新了所有按钮(在else语句之后) .

Board是一个8×8按钮的数组,放在JPanel上

static void playerPlaysAMove(int save_x, int save_y, int moveTo_x, int moveTo_y)

{

if(save_x - moveTo_x == 1 || save_x - moveTo_x == -1)

{

board[moveTo_x][moveTo_y].setIcon(board[save_x][save_y].getIcon());

board[save_x][save_y].setIcon(null);

}

else if (save_x - moveTo_x == 2 && save_y - moveTo_y == 2)

{

board[save_x-1][save_y-1].setIcon(null);

board[moveTo_x][moveTo_y].setIcon(board[save_x][save_y].getIcon());

board[save_x][save_y].setIcon(null);

}

else if (save_x - moveTo_x == 2 && save_y - moveTo_y == -2)

{

board[save_x-1][save_y+1].setIcon(null);

board[moveTo_x][moveTo_y].setIcon(board[save_x][save_y].getIcon());

board[save_x][save_y].setIcon(null);

}

else if (save_x - moveTo_x == -2 && save_y - moveTo_y == 2)

{

board[save_x+1][save_y-1].setIcon(null);

board[moveTo_x][moveTo_y].setIcon(board[save_x][save_y].getIcon());

board[save_x][save_y].setIcon(null);

}

else if (save_x - moveTo_x == -2 && save_y - moveTo_y == -2)

{

board[save_x+1][save_y+1].setIcon(null);

board[moveTo_x][moveTo_y].setIcon(board[save_x][save_y].getIcon());

board[save_x][save_y].setIcon(null);

}

}

基本上我是计算用户选择按钮的X Y坐标,以及用户的目标按钮.有些人会检查他是否正在进行正确的动作,但这是主要的动作部分.

如果X Y坐标差为1,则表示如果X Y坐标差为2,则表示玩家正在移动而不是跳跃,这意味着玩家正在跳跃.我还需要将原始X Y坐标的按钮设置为null,这意味着图标消失,然后将新的imageIcon放在目标X Y坐标处.

如果玩家正在跳跃,那么我还需要计算用户吃掉该块的位置,并将该imageIcon设置为null.

AI完全相同,除了AI通过使用递归函数计算最佳移动来计算X Y坐标.

主要问题是玩家玩家,然后AI计算和播放,然后在过程之后,它将显示两者的结果.在AI计算和播放之前,是否可以让它重绘图像图标?这样玩家就可以看到他演奏的内容,然后是AI播放的内容

最佳答案 尝试使用[save_x] [save_y] .repaint();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值