Java 绘制到特定的JPanel

Java 绘制到特定的JPanel,java,swing,jpanel,paintcomponent,Java,Swing,Jpanel,Paintcomponent,我试图重新制作扫雷舰,但一旦我在屏幕上添加了其他组件,比如地雷计数器,我就无法显示按钮后面的数字 在这个特殊的例子中,我有两个JPanel。 我的第一个JPanel将包含多个组件,例如mine计数器和另一个包含board的JPanel(自定义JButton的逐行数组) 在我添加地雷计数器之前,一切似乎都很好,数字画得很好,逻辑也很好,等等。但这不是我的问题所在 在我的自定义JPanel(包含标签、电路板等的面板)中,我使用paintComponent()方法将数字打印到屏幕上。但是,一旦我添加了

我试图重新制作扫雷舰,但一旦我在屏幕上添加了其他组件,比如地雷计数器,我就无法显示按钮后面的数字

在这个特殊的例子中,我有两个JPanel。 我的第一个JPanel将包含多个组件,例如mine计数器和另一个包含board的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()方法,因为我认为我必须处理两个不同的图形对象,一个用于board panel,另一个用于保存地雷计数和board panel


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

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


我不会将我的每个磁贴都实现为一个JButton,但这是另一个问题。

好吧,尽管如此。。。如果我将它们放在不同的类中,我将如何“倾听”用户右键单击互动程序以降低地雷数量,因为它们在不同的类中?换句话说,我如何知道何时更新它呢?首先,在每个JPanel中添加一个鼠标侦听器。将对要通知的JPanel的引用传递给另一个JPanel,这样它就可以调用该JPanel上的方法来告诉它更改地雷计数。像这样:
public类MinePanel扩展了JPanel{public MinePanel(OtherMinePanel-panelToNotify){//implementation…}
这听起来很有效,而且实现起来相当简单。当我有时间的时候,我会这样实现它,如果我成功地实现了,我会结束这个问题。此外,我开始思考,你对按钮的看法是对的。我只是为了严格的简单性选择了它们,但我可以编写自己的对象,这将更加有效icient。如果我最终遇到问题,我会发回,但我想我不会。谢谢你对雀斑足的帮助。