2013-03-20 2 views
0

주사위 게임 'Sevens'를 시뮬레이트하는 Java GUI를 작성 중입니다.스레드 "main"의 Java 예외 java.lang.NullPointerException Seven Dice Game

GUI를 작성하기 위해 작성된 주요 부분이 있습니다.

아직 실제로 게임을하기 위해 프로그램의 실제 부분을 작성하지 않았습니다.

모든 것이 제대로 컴파일하지만 런타임 오류 얻을 :

Exception in thread "main" java.lang.NullPointerException 
    at java.awt.Container.addImpl(Unknown Source) 
    at java.awt.Container.add(Unknown Source) 
    at SevensGameGUI.,init.(SevensGameGUI.java:88) 
    at SeventsApplication.main(SevensApplication.java:13) 

나는 오류 원인을 모르겠어요를?

//include these import statements in every GUI class 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class SevensGameGUI extends JFrame { 

    //Instance Variables 
    // declares an array of integers to store the total score for each player 
    // allocates memory for 5 players 
     int[] totalScoreArray = new int[4]; 

     //declares an array of integers to store numbers rolled each time someone rolls the dice 
     //allocates memory for at least 3 rolls 
     int[] diceRollArray= new int[2]; 

     //declare an integer amount for the number of dice being rolled in the current turn 
     int diceCount; 

     //declare an integer to keep track of track of who the current player is 
     int playerNumber; 

     //declare a constant for the maximum throws allowed (three) 
     public static final int MAX_THROWS = 3; 

     //declare an integer to remember how many times the first player rolled the dice 
    int firstPlayerRolls; 

    //declare an integer to keep count of the current player's rolls 
    int currentPlayerRolls; 

    //declare an integer to keep track of who is currently winning 
    int winningPlayer; 

    //declare all necessary GUI-related variables 
    //JButtons: 
    private JButton rollDiceButton; 
    private JButton totalScoreButton; 
    private JButton endTurnButton; 

    //JLabels: 
    private JLabel displayCurrentPlayerLabel; 
    private JLabel displayFirstPlayerRollsLabel; 
    private JLabel displayTotalScoreLabel; 

    //JTextAreas: 
    private JTextArea outputCurrentPlayerTextArea; 
    private JTextArea outputFirstPlayerRollsTextArea; 
    private JTextArea outputTotalScoreTextArea; 
    private JTextArea outputDiceRollTextArea; 
    private JTextArea outputTextArea; 

    //JPanels: 
    private JPanel labelPanel; 
    private JPanel buttonPanel; 


    //Declare an event-listener object of type SevensGameListener 
    SevensGameListener listener; 

//--------------------------------------------------------------------------------------------- 

//CONSTRUCTOR 
public SevensGameGUI() { 
super("Sevens Dice Game"); 

    //Initialize Buttons: 
    rollDiceButton = new JButton("Roll Dice"); 
    totalScoreButton = new JButton("Total Your Score"); 
    endTurnButton = new JButton("End Turn"); 

    //Initialize Labels: 
    displayCurrentPlayerLabel = new JLabel("Current Player: "); 
    displayFirstPlayerRollsLabel = new JLabel("First player only rolled: "); 
    displayTotalScoreLabel = new JLabel("Total Score: "); 

    //Initialize Panels: 
    labelPanel = new JPanel(); 
    labelPanel.setLayout(new GridLayout(3,2)); 
    labelPanel.add(displayCurrentPlayerLabel); 
    labelPanel.add(outputCurrentPlayerTextArea); 
    labelPanel.add(displayFirstPlayerRollsLabel); 
    labelPanel.add(outputFirstPlayerRollsTextArea); 
    labelPanel.add(displayTotalScoreLabel); 
    labelPanel.add(outputTotalScoreTextArea); 

    buttonPanel = new JPanel(); 
    buttonPanel.setLayout(new GridLayout(1,3)); 
    buttonPanel.add(rollDiceButton); 
    buttonPanel.add(totalScoreButton); 
    buttonPanel.add(endTurnButton); 

    //Set The Layout as Border Layout 
    this.setLayout(new BorderLayout()); 
    this.add(labelPanel, BorderLayout.NORTH); 
    this.add(outputTextArea, BorderLayout.CENTER); 
    this.add(buttonPanel, BorderLayout.SOUTH); 

    //initilize/register Listener 
    listener = new SevensGameListener(); 

    rollDiceButton.addActionListener(listener); 
    totalScoreButton.addActionListener(listener); 
    endTurnButton.addActionListener(listener); 

    this.addWindowListener(listener); 

}//end of constructor 

//--------------------------------------------------------------------------------------------- 

private class SevensGameListener implements ActionListener, WindowListener { 

public void actionPerformed(ActionEvent ae) { 

    if (ae.getSource() == rollDiceButton) { 

    } 
    if (ae.getSource() == totalScoreButton) { 

    } 
    if (ae.getSource() == endTurnButton) { 
     playerNumber += 1; 
    } 


    outputTextArea.append(" ");   

}//end of method actionPerformed 

public void windowClosing(WindowEvent we) { 

    System.exit(0);    

}//end of windowClosing 

public void windowDeactivated(WindowEvent we) { } 
public void windowActivated(WindowEvent we) { } 
public void windowClosed(WindowEvent we) { } 
public void windowDeiconified(WindowEvent we) { } 
public void windowIconified(WindowEvent we) { } 
public void windowOpened(WindowEvent we) { } 



}//end of class CalculatorListener 


}// end of SevensGameGUI class 

그리고 사실 난 그냥 완료되지 않은 한 경우 프로그램이

public class SevensApplication { 

    public static void main (String[] args) { 

     SevensGameGUI gui = new SevensGameGUI(); 
     gui.pack(); 
     gui.setVisible(true); 

    } 

} 

는 잘 모르겠어요입니다 실행되는 응용 프로그램 클래스 : 여기

은 SevensGameGUI.java 코드입니다 실제로 게임을 실행하거나 내 코드에 오류가있는 GUI 부분의 일부입니까? 아직 게임을 할 코드가 없지만, 내가 만든 GUI의 디스플레이에 영향을 주어야합니까?

+0

모양을 보내고 add 전에 jlabels 및 텍스트 영역을 초기화 : D – pattmorter

답변

4

TextArea 중 아무 것도 초기화하지 않았습니다.

Like & 다른 항목을 확인하십시오.

labelPanel.add(outputCurrentPlayerTextArea); 

이렇게 초기화하십시오.

outputCurrentPlayerTextArea = new TextArea("Hello", 5, 40); 

및 기타 TextArea도 있습니다.

+0

는 일이, 감사합니다. :) – user1368970

1

는 공통점이 무엇인지 확인하고 점들을 연결, 그들에게 선 88과 13에서

관련 문제