我应该在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
}
}
}
我很感激帮助:)。
答案 0 :(得分:1)
我收到一个错误,说明游戏的局部变量,我的帧 对象,未使用。
此外,我收到错误消息,说我需要序列化我的Frame 类。
这不是错误,而是warnings,只是忽略它们。
使用frame
并非强制要求,因为您只是将其用于显示。
如果您不打算在某处保存对象,则添加SerialID也不是必需的。
我还建议你在添加完所有组件后在构造函数的末尾写setVisible(true)
。
答案 1 :(得分:0)
您不必担心所看到的消息。这些不是导致程序崩溃的错误,它们只是警告Eclipse句柄用于警告用户未使用的变量。您可以根据自己的情况忽略这些。序列号警告在同一条船上。对于JFrame,尝试在构造函数中的每个其他命令之后放入setVisible(true)
,以确保要添加的JFrame的所有元素都是可见的。另外,在你的主要方法中,尝试在玩家面前创建框架。