2015-12-07 2 views
0

Я должен вызвать конструктор Frame в драйвере и JFrame должен открыть. Тем не менее, я получаю сообщение о том, что локальная переменная игры, мой объект Frame, не используется. Кто-нибудь знает, почему это происходит? Также я получаю сообщение о том, что мне нужно сериализовать мой класс Frame. Что это?JFrame не открывается

Это мой класс драйвера:

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(); 

} 

} 

Это мой класс Рама:

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

Не указывайте в названии "SOLVED", просто примите ответ, который решил вашу проблему. – user1803551

ответ

0

Вам не нужно беспокоиться о сообщениях, которые вы видите. Это не ошибки, которые приводят к сбою вашей программы, это просто предупреждения, которые дескриптор Eclipse использует для предупреждения пользователя о неиспользуемых переменных. Вы можете игнорировать их для своего дела. Предупреждение о серийном номере находится в одной лодке. Что касается JFrame, попробуйте ввести setVisible(true) после каждой другой команды в конструкторе, чтобы убедиться, что все элементы JFrame, которые вы добавляете, видны. Кроме того, в своем основном методе попробуйте создать кадр перед игроками.

+0

Спасибо за помощь! – starlight

1

Я получаю сообщение о том, что локальная переменная игры, мой объект Frame , не используется.

Также я получаю сообщение о том, что мне нужно сериализовать мой класс .

Это не ошибки, а warnings, просто игнорируйте их.

Не обязательно использовать frame, так как вы просто используете его для отображения.

Добавление SerialID также не является обязательным, если вы не планируете сохранять свой объект где-то.

Я также предлагаю вам написать setVisible(true) в конце вашего конструктора после добавления всех компонентов.

+0

Хорошо, спасибо за помощь! – starlight

+0

@starlight Нет проблем, не забудьте отметить ответ как принятый :). –

Смежные вопросы