2

我正在尝试重新制作扫雷,但是一旦我将其他组件(例如地雷计数器)添加到屏幕中,我在显示按钮后面的数字时遇到问题。

在这种特殊情况下,我有两个 JPanel。我的第一个 JPanel 将包含多个组件,例如地雷计数器和另一个包含板的 JPanel(由自定义 JButton 组成的行数组)。

在我添加矿工计数器之前,一切似乎都正常,数字绘制正常,逻辑正常等等。但这不是我的问题所在。

在我的自定义 JPanel(包含标签、板等的面板)中,我使用 paintComponent() 方法将数字打印到屏幕上。但是,一旦我添加了另一个 JPanel,我需要在屏幕上添加数字,我遇到了一些问题。

首先,我不知道如何区分我在哪个面板上绘图,但我想我找到了解决方法,例如:“g = boardPanel.getGraphics()”。如果这行得通,我在其他地方遇到了问题。很可能与我如何构建我的 paintComponent() 方法有关,我不确定订单的外观。

这是我所拥有的某种代码:

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g = boardPanel.getGraphics();

    //Draw the lines and numbers behind and separating the tiles. These, in my
    //mind, are drawn to the graphics object regarding the playable board (the
    //board, not the panel including the mine counter, etc.) But, when I click
    //on a tile, there are no mine indicators behind it.

}

我想,从本质上讲,我只是不确定如何构造paintComponent() 方法,因为我认为我必须处理两个不同的图形对象,一个用于棋盘面板,一个用于保存地雷计数和棋盘面板。

任何帮助,将不胜感激。谢谢。

4

1 回答 1

2

您必须为每个 JPanel 实现两个不同的类。然后他们将拥有自己的 paintComponent() 方法,而您不必“猜测”您在哪个 JPanel 上绘画。

而且我不会将每个我的图块实现为 JButton,但这是另一个问题。

于 2013-05-30T19:16:10.147 回答