我正在尝试使用2D数组创建游戏以显示游戏的布局。
我很难将int更改为JButton
,并为其分配不同的图像,具体取决于网格中显示的数字:
private void PlayPanel() {
try
{
iconBlank=new ImageIcon(Toolkit.getDefaultToolkit().createImage(GUI.class.getResource("white32x32.jpg")));
}
catch (Exception e)
{
System.err.println("Blank Icon ImageIcon" +e);
}
try
{
iconSand=new ImageIcon(Toolkit.getDefaultToolkit().createImage(GUI.class.getResource("sand.jpg")));
}
catch (Exception e)
{
System.err.println("Sand Icon ImageIcon" +e);
}
try
{
iconBall=new ImageIcon(Toolkit.getDefaultToolkit().createImage(GUI.class.getResource("sand60x60.png")));
}
catch (Exception e)
{
System.err.println("Ball Icon ImageIcon" +e);
}
try
{
iconEnd=new ImageIcon(Toolkit.getDefaultToolkit().createImage(GUI.class.getResource("sandstone.jpg")));
}
catch (Exception e)
{
System.err.println("End Icon ImageIcon" +e);
}
pPlayScreen =new JPanel();
pPlayScreen.setPreferredSize(new Dimension(550,520));
pPlayScreen.setBorder( BorderFactory.createRaisedBevelBorder() );
pPlayScreen.setBackground(Color.white);
pPlayScreen.setLayout (new GridLayout (13,16));
int[][] playButtons = {
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 1, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
{ 3, 1, 1, 1 ,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
};
for (int rows = 0 ; rows < 16 ; rows++)
{
for (int cols = 0 ; cols < 13 ; cols++)
{
if(playButtons [rows][cols]==0){
// ???
}
playButton [rows] [cols] = new JButton ();
playButton [rows] [cols].addActionListener (new Play());
pPlayScreen.add (playButton [rows] [cols]);
pMain.add(pPlayScreen);
}
}
}
答案 0 :(得分:0)
您无法将JButton分配到int数组中。它需要是一个Object数组才能存储整数和JButtons
答案 1 :(得分:0)
我建议采用更面向对象的方法。您无法将Button转换为int。
尝试使用MVC(模型,视图,控制器),然后你可以使用一些包含2D int数组的对象作为模型,并通过显示你喜欢的按钮种类来解释这个数组。模型。
答案 2 :(得分:0)
考虑创建一个具有JButton和int属性的自定义类,如此......
public class MyButton {
private int n;
private JButton button;
// Constructor
public MyButton() {
}
// Accessors and mutators
private void setN(int n)
this.n =n;
}
private int getN() {
return this.n;
}
private void setButton(JButton button) {
this.button = button;
}
private JButton getButton() {
return this.button;
}
}
然后你可以通过创建一个新的MyButton对象来访问它,然后有一个像这样的数组列表......
ArrayList<MyButton> buttons = new ArrayList<MyButton>();
然后你可以做你需要的。这是OOP和Java的类功能之美。这几天我很想念JavaScript。大声笑。希望这有助于...:)