如何在多个面板中使用 class

how to use a class in multiple panels

我正在制作一款坦克游戏。为了避免在菜单面板中制作我的按钮,我写了一个 class 按钮:

package menu;

import java.awt.Image;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;

public class Button extends JButton{

    public JButton button;
    public ImageIcon buttonImage;

    public int x, width, height;

    public String backgroundPath;
    public int y;



    public Button(String backgroundPath,int x, int y, MenuPanel menuPanel)

    {
        super();
        this.backgroundPath = backgroundPath;
        this.x = x;
        this.y = y;

        buttonImage = new 
            ImageIcon(PlayPanel.class.getResource(backgroundPath));
        this.setIcon(buttonImage);
        this.setBounds(x, y, buttonImage.getIconWidth(), 
            buttonImage.getIconHeight());
        this.addActionListener(menuPanel);   
    }
}

在方法的构造函数中我有 MenuPanel menupanel但我希望能够使用此代码是多个面板,如 QuitPanel、HighScorePanel 等

我不知道我必须为此使用哪个参数,所以我被卡住了。

提前致谢!!

您可以声明一个接口 IPanel 并使您的 QuitPanelHighScorePanelMenuPanel 实现该接口。我相信这些面板中的每一个都必须实现一些通用方法,这些方法的声明可以移至 IPanel 接口。然后你可以将 IPanel 作为参数传递给构造函数而不是 MenuPanel.

如果 MenuPanel 是 JPanel 的一个实例,那么您可以像这样更改您的代码...

public Button(String backgroundPath,int x, int y, JPanel pane);

MenuPanel menuPanel 参数更改为 ActionListener 侦听器,因为它的唯一原因是更容易附加 ActionListener 到它,按钮不需要了解 MenuPanel