2017-08-25 7 views
0

IDEが私に を持っていると伝えますスレッド "main"の例外java.lang.NullPointerException 25行目と38行目 すべての行38がそうですパネルの境界をゲームのタイトルを含むように設定します。これは後で画面を変更するときに消えます。 25行目は基本的にコードをメインメソッドに置きます。誰かがあなたがまだ初期化されていない(したがって、現在デフォルトでnullに設定されている)titleNamePanel上で操作を行うにしようとしているjavaはスレッド「main」の例外を返しますjava.lang.NullPointerException

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.*; 

import static java.awt.Color.black; 
import static java.awt.Color.white; 

public class Game { 
    //GUI variables 
    JFrame window; 
    Container container; 
    JPanel titleNamePanel, startButtonPanel, mainTextPanel; 
    JLabel titleNameLabel; 
    Font titleFont = new Font("Times New Roman", Font.PLAIN, 98); 
    Font startButtonFont = new Font("Times New Roman", Font.PLAIN, 50); 
    Font normalFont = new Font("Times New Roman", Font.PLAIN, 28); 
    JButton startButton; 
    JTextArea mainTextArea; 
    TitleScreenHandler TSHandler = new TitleScreenHandler(); 
    ChoiceHandler choiceHandler = new ChoiceHandler(); 

    public static void main(String[]args){ 
     new Game(); 
    } 
    public Game(){ 

     //window 
     window = new JFrame(); 
     window.setSize(800, 800); 
     window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     window.getContentPane().setBackground(black); 
     window.setLayout(null); 
     window.setTitle("ADVENTURE CAVE"); 

     //Title Name 
     titleNamePanel.setBounds(100, 20, 600, 200); 
     titleNamePanel.setBackground(black); 
     titleNameLabel = new JLabel("ADVENTURE CAVE"); 
     titleNameLabel.setForeground(white); 

     //Start button 
     startButtonPanel = new JPanel(); 
     startButtonPanel.setBounds(300, 270, 250, 120); 
     startButtonPanel.setBackground(black); 
     startButtonPanel.setFont(startButtonFont); 
     startButton.addActionListener(TSHandler); 
     startButton.setFocusPainted(false); 

     window.setVisible(true); 

    } 
    public void gotoMainGameScreen(){ 
     titleNamePanel.setVisible(false); 
     startButtonPanel.setVisible(false); 

     //Main Panel 
     mainTextPanel = new JPanel(); 
     mainTextPanel.setBounds(100, 100, 600, 250); 
     mainTextPanel.setBackground(black); 
     container.add(mainTextPanel); 

     //Main Text 
     mainTextArea = new JTextArea("You have reached the Cave of Adventures;"); 
     mainTextArea.setBounds(100, 100, 600, 250); 
     mainTextArea.setBackground(black); 
     mainTextArea.setForeground(white); 
     mainTextArea.setFont(normalFont); 
     mainTextArea.setLineWrap(true); 
     mainTextPanel.add(mainTextArea); 

    } 
    public class TitleScreenHandler implements ActionListener { 
     public void actionPerformed(ActionEvent e){ 
      gotoMainGameScreen(); 
     } 
    } 
    public class ChoiceHandler implements ActionListener{ 
     public void actionPerformed(ActionEvent event){ 

     } 
    } 

} 
+1

が 'titleNamePanel'が初期化されることはありません直前に – Vivick

答えて

0

私に助けPLSの。

あなたが実行する必要があります。

titleNamePanel = new JPanel(); 

...あなたのsetBoundsコール

関連する問題