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){
}
}
}
が 'titleNamePanel'が初期化されることはありません直前に – Vivick