初始化JButton的网格并将它们添加到JFrame

时间:2015-02-26 22:03:48

标签: arrays user-interface jframe jbutton

我试图编写一个在JFrame中播放Yahtzee的程序。我们的老师有一种我们应该写它的方式,它涉及添加ConfigurationButtons - 一个扩展JButton的类 - 到JFRame。这是我到目前为止的代码:

builder= new PlayerPanel();

manager = new JFrame("Yahtzee!");
manager.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
manager.setLayout(new GridLayout(TOTAL, numPlayers));
manager.add(builder);
//manager.add(howManyPlayers);
manager.setSize(1200,600);
manager.setVisible(true);

private class PlayerPanel extends JPanel
{
    private final int ROWS = 18;
    private JLabel[]titles;
    private PlayerPanel()
    {
        for(int j=0;j<numPlayers;j++)
        {
            for(int i=0;i<ROWS;i++)
            {
                fields[i][j]=new ConfigurationButton(i,j);
                manager.add(fields[i][j]);
            }
        }
    }

我尝试实施this解决方案,但它没有工作 - 我得到的只是一个空白的JFrame。

1 个答案:

答案 0 :(得分:0)

好的,要填写您的JFrame,请查看我使用以下代码完成的操作,并将其应用于您的情况。

JFrame manager = new JFrame("Manager");
JPanel panel = new JPanel(new GridLayout(10, 10));

for(int i = 0; i < 10; i++)
{
    for(int j = 0; j < 10; j++)
    {
        JButton button = new JButton(i + " - " + j);

        button.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                ((JButton)(e.getSource())).setText("Clicked");
            }
        });

        panel.add(button);
    }
}

manager.add(panel);
manager.setSize(750, 750);
manager.setVisible(true);

记下面板在GridLayout中的设置方式(如您所示),但面板随后会添加到JFrame中。

您应该能够根据此示例构建面板,并在必要时替换您的自定义组件。