初始化 JButton 网格并将它们添加到 JFrame
Initializing a grid of JButton and adding them to a JFrame
我正在尝试编写一个在 JFrame 中播放 Yahtzee 的程序。我们的老师有一种我们应该编写的方法,它涉及将 ConfigurationButtons - 一个扩展 JButton 的 class - 添加到 JFFrame。这是我到目前为止的代码:
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。
好的,填写你的 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。
您应该能够基于此示例构建您的面板,并在必要时替换您的自定义组件。
我正在尝试编写一个在 JFrame 中播放 Yahtzee 的程序。我们的老师有一种我们应该编写的方法,它涉及将 ConfigurationButtons - 一个扩展 JButton 的 class - 添加到 JFFrame。这是我到目前为止的代码:
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。
好的,填写你的 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。
您应该能够基于此示例构建您的面板,并在必要时替换您的自定义组件。