小猜猜游戏GUI在两个窗口中打开

时间:2013-06-17 09:58:42

标签: java windows swing jframe jpanel

好吧,这就是问题所在:

我创造了这个小猜谜游戏,并希望以gui为基础...... 但它出现在两个不同的窗口 -

  1. 第一个窗口是菜单(按钮和标签)
  2. 第二个窗口由按钮激活并包含游戏。
  3. 我有办法将两个窗口合二为一 - 第一个窗口中的AS被第二个窗口覆盖了吗?

    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的部分。

    注意:在此动作事件中我确实有其他一些在单击按钮后发生。

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

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

我建议你看看JPanel,因为你会经常使用它。