1

好吧,问题来了:

我创建了这个小猜谜游戏,并想让它基于 gui……但它出现在两个不同的窗口中 -

  1. 第一个窗口是菜单(按钮和标签)
  2. 第二个窗口由按钮激活并在其中包含游戏。

有没有办法让我将两个窗口合二为一- AS IN 第一个窗口被第二个窗口覆盖?

public class Skeleton extends JFrame implements ActionListener
    {   

JPanel glass = new JPanel();
JButton btn = new JButton("Start");
TextField tf = new TextField();
JLabel label = new JLabel("Enter Guess Here: ");
JLabel answerLabel = new JLabel("Answer:...");
Board bob =new Board();

public Skeleton()
{
    setIconImage(new ImageIcon("icon.png").getImage());
    getContentPane().setBackground(Color.darkGray);
    getContentPane().setForeground(Color.black);
    setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
    add(label);
    label.setForeground(Color.black);
    add(tf);
    tf.setText("");
    add(btn);
    btn.setBackground(Color.green);
    btn.addActionListener(this);
    add(answerLabel);
    answerLabel.setForeground(Color.black);


    setTitle("Guessing Game");
    setDefaultCloseOperation(EXIT_ON_CLOSE);    
    setSize(300,200);
    setLocationRelativeTo(null);
    setVisible(true);
    setResizable(true);


}
public void actionPerformed(ActionEvent e)
{//GAME FRAME
    JFrame frame = new JFrame();
    int userGuess= Integer.parseInt(tf.getText());
    frame.add(bob);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    frame.setSize(300,285);
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);
    frame.setIconImage(new ImageIcon("icon.png").getImage());
...........

这显然不是完整的代码,只是使用 GUI 的部分。

注意:在单击按钮后,我在此 actionevent 中确实有一些其他事件。

这也是我的第一场比赛:D(如果我可以称之为)

4

2 回答 2

2

您在“actionPerformed”方法中创建了新的 JFrame,因此有两个框架(骨架实例和新的)是正常的。

只需使用“this”而不是新的 JFrame 实例来保留一个 JFrame 实例。

于 2013-06-17T10:12:08.597 回答
2

每个 JFrame 都会创建一个新窗口。如果您想在同一个窗口中显示所有内容,请仅创建一个 JFrame 并更改其内容。

您可以通过设置 JFrame 的 contentPane ( frame.setContentPane(...) ) 或向其添加/删除 Panel 来更改 JFrame 的全部内容。

我建议看一下 JPanel,因为您会经常使用它。

于 2013-06-17T10:12:31.183 回答