我可以在JPanels数组中切换JPanels的位置吗?

时间:2013-05-06 17:09:37

标签: java swing user-interface jpanel

根据他们的位置,我有一系列JPanels绘制Checkers风格的棋盘,其中一些JPanels上有黑色或黄色棋子。我希望能够明显地移动这些部分..有没有办法通过切换它们在阵列中的位置来做到这一点?我尝试使用基本的交换方式,我在其中创建了一个tmp并切换..但是这不起作用..任何帮助都非常感激。

交换试验:

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

3 个答案:

答案 0 :(得分:1)

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

你可以......

  • 按照描述交换数组位置,另外交换视觉位置(通过getLocation() / setLocation()

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

答案 1 :(得分:1)

  根据他们的立场,其中一些JPanels上有一些黑色或黄色的碎片。我希望能够明显地移动这些碎片。

  1. 使用不透明的JLabel作为棋盘的背景。
  2. 使用图标表示检查件。
  3. 将图标从标签移动到标签,而不是尝试交换背景组件。

答案 2 :(得分:0)

您是否尝试过重画整个画面?

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

当需要进行更改时,请调用removeAll(),再次调用addComponents(),然后验证()和repaint():)。