JFrame没有打开

时间:2015-12-07 18:29:00

标签: java swing variables jframe

我应该在Driver中调用Frame构造函数,而JFrame应该打开。但是,我收到一个错误,说没有使用我的Frame对象的游戏的局部变量。有谁知道为什么会这样?另外我收到一个错误,说我需要序列化我的Frame类。那是什么?

这是我的驱动程序类:

public class Driver {
    public static void main(String[] args) {
        Player create[] = new Player[2];
        create[0] = new Player();
        create[1] = new Enemy();

        for (int x = 0; x < 2; x++) {
            create[x].CharacterCreate();
            //System.out.println(create[x].Print());
        }
        Frame game = new Frame();

}

}

这是我的Frame类:

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Frame extends JFrame
{

    public Frame ()
    {
        super();
        //Create Grid Layout
        setSize(300, 200); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);   //makes window visible

        //Creates Grid Layout
        GridLayout gl = new GridLayout(2,3);
        setLayout(gl);
        setTitle("HW11");
        //Creates panel
        JPanel j = new JPanel();
        add (j);

        //Creates Labels
        playerLabel = new JLabel("Player Stats");
        add (playerLabel);
        JLabel space1 = new JLabel(" ");
        add (space1);
        enemeyLabel = new JLabel("EnemyStats");
        add(enemeyLabel);
        JLabel space2 = new JLabel(" ");
        add (space2);


        //Create attack button
        JButton attackButton = new JButton("Attack"); 
        EndingListener updateStats = new EndingListener( );   
        attackButton.addActionListener(updateStats);
        add(attackButton);   //adds button to window

    }

    class EndingListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e) 
        {
            update.Attack(update);
            playerLabel.setText(update.Print());
            enemeyLabel.setText(update.Print());
          //  if (Player.gethealth() == 0)
                //System.exit(0);  //terminates the program
          // if (Enemy.gethealth()==0)
            //  System.exit(0);  //terminates the program
        }
    }
}

我很感激帮助:)。

2 个答案:

答案 0 :(得分:1)

  

我收到一个错误,说明游戏的局部变量,我的帧   对象,未使用。

     

此外,我收到错误消息,说我需要序列化我的Frame   类。

这不是错误,而是warnings,只是忽略它们。

使用frame并非强制要求,因为您只是将其用于显示。

如果您不打算在某处保存对象,则添加SerialID也不是必需的。

我还建议你在添加完所有组件后在构造函数的末尾写setVisible(true)

答案 1 :(得分:0)

您不必担心所看到的消息。这些不是导致程序崩溃的错误,它们只是警告Eclipse句柄用于警告用户未使用的变量。您可以根据自己的情况忽略这些。序列号警告在同一条船上。对于JFrame,尝试在构造函数中的每个其他命令之后放入setVisible(true),以确保要添加的JFrame的所有元素都是可见的。另外,在你的主要方法中,尝试在玩家面前创建框架。