我试图编写一个在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。
答案 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中。
您应该能够根据此示例构建面板,并在必要时替换您的自定义组件。