【发布时间】:2013-07-27 03:34:03
【问题描述】:
public game()
{
setTitle("game");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setLayout(new BorderLayout());
buildMenu();
setJMenuBar(menuBar);
buildGreetingsPanel();
add(greetingsPanel, BorderLayout.NORTH);
buildGamePanel();
add(gamePanel, BorderLayout.CENTER);
buildStatusPanel();
add(statusPanel, BorderLayout.SOUTH);
buildSettingsPanel();
add(settingsPanel);
pack();
setVisible(true);
}
[...............]
private void buildGamePanel()
{
gamePanel = new JPanel();
gamePanel.setBorder(BorderFactory.createLineBorder(difficultyColor));
gamePanel.setPreferredSize(new Dimension(9 * span, 9 * span));
gamePanel.setLayout(new GridLayout(40, 40, 0, 0));
for(col = 0; col < gameWidth; col++)
{
for(row = 0; row < gameHeight; row++)
{
buttons[col][row] = new JButton();
buttons[col][row].setBounds(4, 4, span, span);
buttons[col][row].addMouseListener(new mouseListener());
gamePanel.add(buttons[col][row]);
}
}
}
如标题所示。
我添加了buildGamePanel(); 和add(gamePanel, BorderLayout.CENTER);
已经。有什么问题?谢谢
编辑:由于还没有人回答,问题可能出在其他地方。 我添加了公共游戏();构造函数可能是错误的来源。
【问题讨论】:
-
你遇到了什么错误?
-
完全没有错误。按钮只是不显示。
-
据我了解,缺陷在于这一行 `buttons[col][row].setBounds(4, 4, span, span);`,因为每个值都用作 this 的参数方法在循环的整个生命周期中保持不变。因此所有。按钮将出现在同一个位置,一个在另一个之上。
-
你能发布整个源代码吗?我怀疑您的布局存在问题,正如 nicE cOw 指出的那样,您按钮的 X/Y 值都恒定为“4”。
-
供参考,这里有一个完整的example。
标签: java arrays swing jpanel jbutton