1

我有一系列 JPanel 绘制棋盘式棋盘,其中一些 JPanel 上有黑色或黄色的棋子,根据它们的位置。我希望能够明显地移动这些碎片..有没有办法通过切换它们在阵列中的位置来做到这一点?我尝试使用创建 tmp 和 switch 的基本交换方式..但这没有用..任何帮助都非常感谢。

交换试验:

JPanel tmp = board[4][3];
    board[4][3] = board[2][7];
    board[2][7] = tmp;
4

3 回答 3

1

根据他们的位置,其中一些 JPanel 上有黑色或黄色的碎片。我希望能够明显地移动那些碎片..

  1. 使用不透明的 JLabel 作为棋盘的背景。
  2. 使用图标来表示棋盘格。
  3. 将图标从标签移动到标签,而不是尝试交换背景组件。
于 2013-05-06T20:00:11.463 回答
1

屏幕上某些 JPanel 的视觉位置与其在某个数组中的位置(即在内存中的位置)无关。

你可以...

  • 如您所述交换阵列位置并另外交换视觉位置(通过getLocation()/ setLocation()

  • 保持数组位置和视觉位置不变,但交换状态(即交换背景颜色左右)。

于 2013-05-06T17:37:33.987 回答
0

您是否尝试过重新粉刷整个框架?

我不确定您所做的是否按预期工作。如果不是,您可能想尝试创建一个方法 addComponents() ,您将在其中(显然 :) )添加框架中的所有组件。

当需要更改时调用 removeAll(),再次调用 addComponents(),然后 validate() 和 repaint() :)。

于 2013-05-06T17:18:40.267 回答