【问题标题】:Can't add JButtons array to JPanel无法将 JButtons 数组添加到 JPanel
【发布时间】: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


【解决方案1】:

问题出在 BorderLayout();

当它编译时,settingsPanel 在 gamePanel 之前被添加到 GUI 的中心。 忘记指定了应该如下放置:

    add(settingsPanel, BorderLayout.EAST);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多