如何在多个面板中使用 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
并使您的 QuitPanel
、HighScorePanel
和 MenuPanel
实现该接口。我相信这些面板中的每一个都必须实现一些通用方法,这些方法的声明可以移至 IPanel
接口。然后你可以将 IPanel
作为参数传递给构造函数而不是 MenuPanel
.
如果 MenuPanel 是 JPanel 的一个实例,那么您可以像这样更改您的代码...
public Button(String backgroundPath,int x, int y, JPanel pane);
将 MenuPanel menuPanel
参数更改为 ActionListener
侦听器,因为它的唯一原因是更容易附加 ActionListener
到它,按钮不需要了解 MenuPanel
我正在制作一款坦克游戏。为了避免在菜单面板中制作我的按钮,我写了一个 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
并使您的 QuitPanel
、HighScorePanel
和 MenuPanel
实现该接口。我相信这些面板中的每一个都必须实现一些通用方法,这些方法的声明可以移至 IPanel
接口。然后你可以将 IPanel
作为参数传递给构造函数而不是 MenuPanel
.
如果 MenuPanel 是 JPanel 的一个实例,那么您可以像这样更改您的代码...
public Button(String backgroundPath,int x, int y, JPanel pane);
将 MenuPanel menuPanel
参数更改为 ActionListener
侦听器,因为它的唯一原因是更容易附加 ActionListener
到它,按钮不需要了解 MenuPanel