Eclipse Fehler besser zu verstehen!!!

LamaDingo

Neues Mitglied
Servus,

folgendes Programm habe ich erstellt:
Man hat fünf Spieler, die man erstellt und damit Namen eingibt. Dann wählt man die Rundenanzahl aus mit den Buttons. Nach dem man einen der Buttons betätigt hat, öffnet sich eine weiteres Fenster, wo sich die eingetragenen Spieler befinden und man ihr Werte sieht.

Doch Eclipse wirft einen Fehler aus mit dem ich nicht anfangen kann. Dies passiert wenn man die Rundenanzahl Buttons betätigt. Das zweite Fenster öffnet sich nicht.

Also hätte ich zwei Fragen: wie kann man die Fehler bei Eclipse besser verstehen.
Weil:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at oberflaeche.MainWindow$6.actionPerformed(MainWindow.java:294)

etc…. verstehe ich kaum und ich weiß nicht was ich damit anfangen soll.

Und vielleicht können Sie meinen code mal ansehen und sagen, was ich da so verkehrt mache….

Danke schön ;)

MainWindow Klasse beinhaltet alle Einträge und Auswahl der Rundenanzahl.

Java:
package oberflaeche;
        public class MainWindow extends JFrame {
	public ShooterGame gameWindow;
	protected Player Player1 = new Player();
	protected Player Player2 = new Player();
	protected Player Player3 = new Player();
	protected Player Player4 = new Player();
	protected Player Player5 = new Player();
	private int counterTextfield = 1;
	private boolean buttonPressed = false;
	private int rownumber;
	private boolean optical_view = false;
	private JPanel contentPane;
	private JTextField txtPlayer1;
	private JTextField txtPlayer2;
	private JTextField txtPlayer3;
	private JTextField txtPlayer4;
	private JTextField txtPlayer5;
	private JButton threeRow;
	private JLabel lblChooseTheNumber;
	private JButton fiveRows;
	private JButton sevenRows;
	private JButton nineRows;
	private JButton btnCreate;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					MainWindow frame = new MainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	

	/**
	 * Create the frame.
	 */
	public MainWindow() {
		setTitle("Shooter");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 318, 353);
		contentPane = new JPanel();
		contentPane.setBackground(new Color(0, 153, 51));
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		GridBagLayout gbl_contentPane = new GridBagLayout();
		gbl_contentPane.columnWidths = new int[]{0, 0, 0, 0};
		gbl_contentPane.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
		gbl_contentPane.columnWeights = new double[]{0.0, 1.0, 0.0, Double.MIN_VALUE};
		gbl_contentPane.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
		contentPane.setLayout(gbl_contentPane);
		
		JLabel lblChooseByClicking = new JLabel("Max 5 players");
		lblChooseByClicking.setHorizontalAlignment(SwingConstants.CENTER);
		lblChooseByClicking.setForeground(new Color(0, 0, 51));
		lblChooseByClicking.setFont(new Font("Comic Sans MS", Font.BOLD, 13));
		GridBagConstraints gbc_lblChooseByClicking = new GridBagConstraints();
		gbc_lblChooseByClicking.insets = new Insets(0, 0, 5, 5);
		gbc_lblChooseByClicking.gridx = 1;
		gbc_lblChooseByClicking.gridy = 0;
		contentPane.add(lblChooseByClicking, gbc_lblChooseByClicking);
		
		txtPlayer1 = new JTextField();
		GridBagConstraints gbc_txtPlayer1 = new GridBagConstraints();
		gbc_txtPlayer1.insets = new Insets(0, 0, 5, 5);
		gbc_txtPlayer1.fill = GridBagConstraints.HORIZONTAL;
		gbc_txtPlayer1.gridx = 1;
		gbc_txtPlayer1.gridy = 1;
		contentPane.add(txtPlayer1, gbc_txtPlayer1);
		txtPlayer1.setColumns(10);
		
		
		txtPlayer2 = new JTextField();
		GridBagConstraints gbc_txtPlayer2 = new GridBagConstraints();
		gbc_txtPlayer2.insets = new Insets(0, 0, 5, 5);
		gbc_txtPlayer2.fill = GridBagConstraints.HORIZONTAL;
		gbc_txtPlayer2.gridx = 1;
		gbc_txtPlayer2.gridy = 2;
		contentPane.add(txtPlayer2, gbc_txtPlayer2);
		txtPlayer2.setColumns(10);
		txtPlayer2.setVisible(false);
		
		txtPlayer3 = new JTextField();
		GridBagConstraints gbc_txtPlayer3 = new GridBagConstraints();
		gbc_txtPlayer3.insets = new Insets(0, 0, 5, 5);
		gbc_txtPlayer3.fill = GridBagConstraints.HORIZONTAL;
		gbc_txtPlayer3.gridx = 1;
		gbc_txtPlayer3.gridy = 3;
		contentPane.add(txtPlayer3, gbc_txtPlayer3);
		txtPlayer3.setColumns(10);
		txtPlayer3.setVisible(false);
		
		txtPlayer4 = new JTextField();
		GridBagConstraints gbc_txtPlayer4 = new GridBagConstraints();
		gbc_txtPlayer4.insets = new Insets(0, 0, 5, 5);
		gbc_txtPlayer4.fill = GridBagConstraints.HORIZONTAL;
		gbc_txtPlayer4.gridx = 1;
		gbc_txtPlayer4.gridy = 4;
		contentPane.add(txtPlayer4, gbc_txtPlayer4);
		txtPlayer4.setColumns(10);
		txtPlayer4.setVisible(false);
		
		txtPlayer5 = new JTextField();
		GridBagConstraints gbc_txtPlayer5 = new GridBagConstraints();
		gbc_txtPlayer5.insets = new Insets(0, 0, 5, 5);
		gbc_txtPlayer5.fill = GridBagConstraints.HORIZONTAL;
		gbc_txtPlayer5.gridx = 1;
		gbc_txtPlayer5.gridy = 5;
		contentPane.add(txtPlayer5, gbc_txtPlayer5);
		txtPlayer5.setColumns(10);
		txtPlayer5.setVisible(false);
		
		//anfangs die Felder unsichtbar.
		
		final JButton plus = new JButton("+");
		plus.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				if (buttonPressed == true)
				{
					counterTextfield++;
					buttonPressed = false;
					if (counterTextfield == 2)
					{
						txtPlayer2.setVisible(true);
						contentPane.revalidate();
					}
					if (counterTextfield == 3)
					{
						txtPlayer3.setVisible(true);
						contentPane.revalidate();
					}
					if (counterTextfield == 4)
					{
						txtPlayer4.setVisible(true);
						contentPane.revalidate();
					}
					if (counterTextfield == 5)
					{
						txtPlayer5.setVisible(true);
						contentPane.revalidate();
					}
					if (counterTextfield >= 5)
					{
						plus.setVisible(false);
						contentPane.revalidate();
					}
				}
				
			}
		});
		
		plus.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
		GridBagConstraints gbc_plus = new GridBagConstraints();
		gbc_plus.fill = GridBagConstraints.HORIZONTAL;
		gbc_plus.insets = new Insets(0, 0, 5, 0);
		gbc_plus.gridx = 2;
		gbc_plus.gridy = 1;
		contentPane.add(plus, gbc_plus);
		
		btnCreate = new JButton("Create");
		btnCreate.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				buttonPressed=true;
				
				if (counterTextfield == 1)
				{

					Player1.setName(txtPlayer1.getText());
					Player1.setExist(true);
				}
				if (counterTextfield == 2)
				{
					Player2.setName(txtPlayer2.getText());
					Player2.setExist(true);
				}
				if (counterTextfield == 3)
				{
					Player3.setName(txtPlayer3.getText());
					Player3.setExist(true);
				}
				if (counterTextfield == 4)
				{
					Player4.setName(txtPlayer4.getText());
					Player4.setExist(true);
				}
				if (counterTextfield == 5)
				{
					Player5.setName(txtPlayer5.getText());
					Player5.setExist(true);
				}
				
				if (counterTextfield >= 5)
				{
					btnCreate.setVisible(false);
					contentPane.revalidate();
				}
					
			}
		});
		btnCreate.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
		GridBagConstraints gbc_btnCreate = new GridBagConstraints();
		gbc_btnCreate.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnCreate.insets = new Insets(0, 0, 5, 0);
		gbc_btnCreate.gridx = 2;
		gbc_btnCreate.gridy = 3;
		contentPane.add(btnCreate, gbc_btnCreate);
		
		JButton btnDone = new JButton("Done");
		btnDone.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				if(buttonPressed == true || counterTextfield > 1)
				{
				btnCreate.setVisible(false);
				plus.setVisible(false);
				contentPane.revalidate();
				}
			}
		});
		btnDone.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
		GridBagConstraints gbc_btnDone = new GridBagConstraints();
		gbc_btnDone.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnDone.insets = new Insets(0, 0, 5, 0);
		gbc_btnDone.gridx = 2;
		gbc_btnDone.gridy = 5;
		contentPane.add(btnDone, gbc_btnDone);
		
		lblChooseTheNumber = new JLabel("Choose the number of rows:");
		lblChooseTheNumber.setForeground(new Color(0, 0, 51));
		lblChooseTheNumber.setFont(new Font("Comic Sans MS", Font.BOLD, 13));
		GridBagConstraints gbc_lblChooseTheNumber = new GridBagConstraints();
		gbc_lblChooseTheNumber.insets = new Insets(0, 0, 5, 5);
		gbc_lblChooseTheNumber.gridx = 1;
		gbc_lblChooseTheNumber.gridy = 6;
		contentPane.add(lblChooseTheNumber, gbc_lblChooseTheNumber);
		
		threeRow = new JButton("3 Rows");
		threeRow.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				gameWindow.setVisible(true);
				rownumber = 3;
				
			}
		});
		threeRow.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
		GridBagConstraints gbc_threeRow = new GridBagConstraints();
		gbc_threeRow.anchor = GridBagConstraints.WEST;
		gbc_threeRow.insets = new Insets(0, 0, 5, 5);
		gbc_threeRow.gridx = 1;
		gbc_threeRow.gridy = 7;
		contentPane.add(threeRow, gbc_threeRow);
		
		fiveRows = new JButton("5 Rows");
		fiveRows.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				gameWindow.setVisible(true);
				rownumber = 5;
			}
		});
		fiveRows.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
		GridBagConstraints gbc_fiveRows = new GridBagConstraints();
		gbc_fiveRows.anchor = GridBagConstraints.EAST;
		gbc_fiveRows.insets = new Insets(0, 0, 5, 5);
		gbc_fiveRows.gridx = 1;
		gbc_fiveRows.gridy = 8;
		contentPane.add(fiveRows, gbc_fiveRows);
		
		sevenRows = new JButton("7 Rows");
		sevenRows.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				gameWindow.setVisible(true);
				rownumber = 7;
			}
		});
		sevenRows.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
		GridBagConstraints gbc_sevenRows = new GridBagConstraints();
		gbc_sevenRows.anchor = GridBagConstraints.WEST;
		gbc_sevenRows.insets = new Insets(0, 0, 5, 5);
		gbc_sevenRows.gridx = 1;
		gbc_sevenRows.gridy = 9;
		contentPane.add(sevenRows, gbc_sevenRows);
		
		nineRows = new JButton("9 Rows");
		nineRows.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				rownumber = 9;
				gameWindow.setVisible(true);
			}
		});
		nineRows.setFont(new Font("Comic Sans MS", Font.PLAIN, 11));
		GridBagConstraints gbc_nineRows = new GridBagConstraints();
		gbc_nineRows.anchor = GridBagConstraints.EAST;
		gbc_nineRows.insets = new Insets(0, 0, 0, 5);
		gbc_nineRows.gridx = 1;
		gbc_nineRows.gridy = 10;
		contentPane.add(nineRows, gbc_nineRows);
	}

	protected int getCounterTextfield()
	{
		return counterTextfield;
	}
	
	protected int getRowNumber()
	{
		return rownumber;
	}
}

ShooterGame beinhaltet die Einträge und gibt diese aus.

Java:
package oberflaeche;

import java.util.*;

public class ShooterGame extends JFrame {
	public MainWindow mwindow = new MainWindow();
	private int personCounter = 1;
	private int rowsToPlay = 0;
	private int rowsToCheck = 0;
	private int playerList = mwindow.getCounterTextfield();
	String showNumber = "";
	private Random rn = new Random();
	private int randomNumber  = 0;
	private int buttonCounter = 0;
	private JPanel contentPane;
	private int threeHitsCounter = 0;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ShooterGame frame = new ShooterGame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public ShooterGame() {
		rowsToPlay = mwindow.getRowNumber();
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 284, 426);
		contentPane = new JPanel();
		contentPane.setBackground(Color.RED);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel Playerlist = new JLabel("Playerlist:");
		Playerlist.setFont(new Font("Comic Sans MS", Font.BOLD | Font.ITALIC, 14));
		Playerlist.setBounds(24, 11, 145, 28);
		contentPane.add(Playerlist);
		
		JLabel Player1_ = new JLabel(mwindow.Player1.getName());
		Player1_.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
		Player1_.setBounds(24, 43, 145, 28);
		contentPane.add(Player1_);		
		
		JLabel Player2_ = new JLabel(mwindow.Player2.getName());
		Player2_.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
		Player2_.setBounds(24, 82, 145, 28);
		contentPane.add(Player2_);
		if(mwindow.Player2.getExist() == true)
		{
			Player2_.setVisible(true);
		}
		else
		{
			Player2_.setVisible(false);
		}
		
		JLabel Player3_ = new JLabel(mwindow.Player3.getName());
		Player3_.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
		Player3_.setBounds(24, 121, 145, 28);
		contentPane.add(Player3_);
		
		JLabel Player4_ = new JLabel(mwindow.Player4.getName());
		Player4_.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
		Player4_.setBounds(24, 160, 145, 28);
		contentPane.add(Player4_);
		
		JLabel Player5_ = new JLabel(mwindow.Player5.getName());
		Player5_.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
		Player5_.setBounds(24, 199, 145, 28);
		contentPane.add(Player5_);
		
		JLabel lblScore = new JLabel("Score:");
		lblScore.setFont(new Font("Comic Sans MS", Font.BOLD | Font.ITALIC, 14));
		lblScore.setBounds(176, 11, 82, 28);
		contentPane.add(lblScore);
		
		final JLabel ScorePlayer1 = new JLabel(Integer.toString(mwindow.Player1.getHit()));
		ScorePlayer1.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
		ScorePlayer1.setBounds(179, 50, 68, 14);
		contentPane.add(ScorePlayer1);
		
		final JLabel ScorePlayer2 = new JLabel(Integer.toString(mwindow.Player2.getHit()));
		ScorePlayer2.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
		ScorePlayer2.setBounds(179, 89, 68, 14);
		contentPane.add(ScorePlayer2);
		
		final JLabel ScorePlayer3 = new JLabel(Integer.toString(mwindow.Player3.getHit()));
		ScorePlayer3.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
		ScorePlayer3.setBounds(179, 128, 68, 14);
		contentPane.add(ScorePlayer3);
		
		final JLabel ScorePlayer4 = new JLabel(Integer.toString(mwindow.Player4.getHit()));
		ScorePlayer4.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
		ScorePlayer4.setBounds(179, 167, 68, 14);
		contentPane.add(ScorePlayer4);
		
		final JLabel ScorePlayer5 = new JLabel(Integer.toString(mwindow.Player5.getHit()));
		ScorePlayer5.setFont(new Font("Comic Sans MS", Font.BOLD, 12));
		ScorePlayer5.setBounds(179, 206, 68, 14);
		contentPane.add(ScorePlayer5);
		
		numbersgenerator();
		if(randomNumber <= 20)
		{
			showNumber = Integer.toString(randomNumber);
		}
		else
		{
			showNumber = "BULLSEYE";
		}
		
		JLabel ThrowNumber = new JLabel(showNumber);
		ThrowNumber.setFont(new Font("Monotype Corsiva", Font.BOLD, 21));
		ThrowNumber.setHorizontalAlignment(SwingConstants.CENTER);
		ThrowNumber.setBounds(24, 238, 223, 70);
		contentPane.add(ThrowNumber);
		
		JButton btnSingle = new JButton("Single");
		btnSingle.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (rowsToCheck <= rowsToPlay )	
				{
				if (personCounter == 1)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player1.setHit(mwindow.Player1.getHit()+1);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
						rowsToCheck ++;
					}
				}
				
				if (personCounter == 2)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player2.setHit(mwindow.Player2.getHit()+1);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
					}
				}
				
				if (personCounter == 3)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player3.setHit(mwindow.Player3.getHit()+1);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
					}
				}
				
				if (personCounter == 4)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player4.setHit(mwindow.Player4.getHit()+1);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
					}
				}
				
				if (personCounter == 5)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player5.setHit(mwindow.Player5.getHit()+1);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter = 0 ;
					}
				}
			}
			}
		});
		btnSingle.setBounds(10, 319, 75, 23);
		contentPane.add(btnSingle);
		
		JButton btnDouble = new JButton("Double");
		btnDouble.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (rowsToCheck <= rowsToPlay )
				{
				if (personCounter == 1)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player1.setHit(mwindow.Player1.getHit()+2);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
						rowsToCheck ++;
					}
				}
				
				if (personCounter == 2)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player2.setHit(mwindow.Player2.getHit()+2);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
					}
				}
				
				if (personCounter == 3)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player3.setHit(mwindow.Player3.getHit()+2);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
					}
				}
				
				if (personCounter == 4)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player4.setHit(mwindow.Player4.getHit()+2);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
					}
				}
				
				if (personCounter == 5)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player5.setHit(mwindow.Player5.getHit()+2);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter = 0 ;
					}
				}
			}
			}
		});
		btnDouble.setBounds(94, 319, 75, 23);
		contentPane.add(btnDouble);
		
		JButton btnTriple = new JButton("Triple");
		btnTriple.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			if (rowsToCheck <= rowsToPlay )	
			{
				if (personCounter == 1)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player1.setHit(mwindow.Player1.getHit()+3);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
						rowsToCheck ++;
					}
				}
				
				if (personCounter == 2)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player2.setHit(mwindow.Player2.getHit()+3);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
					}
				}
				
				if (personCounter == 3)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player3.setHit(mwindow.Player3.getHit()+3);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
					}
				}
				
				if (personCounter == 4)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player4.setHit(mwindow.Player4.getHit()+3);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter ++;
					}
				}
				
				if (personCounter == 5)
				{
					if(threeHitsCounter < 2)
					{
						mwindow.Player5.setHit(mwindow.Player5.getHit()+3);
						threeHitsCounter++;
					}
					if (threeHitsCounter ==3)
					{
						personCounter = 0 ;
					}
				}
			}
		}
		});
		btnTriple.setBounds(179, 319, 79, 23);
		contentPane.add(btnTriple);
		
		JButton btnNoHit = new JButton("No Hit!");
		btnNoHit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
			if (rowsToCheck <= rowsToPlay )
			{
				if (personCounter == 1)
				{
					ScorePlayer1.setText(Integer.toString(mwindow.Player1.getHit()));
					threeHitsCounter = +3;
					rowsToCheck ++;
				}
				
				if (personCounter == 2)
				{
					ScorePlayer2.setText(Integer.toString(mwindow.Player2.getHit()));
					threeHitsCounter = +3;
				}

				if (personCounter == 3)
				{
					ScorePlayer3.setText(Integer.toString(mwindow.Player3.getHit()));
					threeHitsCounter = +3;
				}
				
				if (personCounter == 4)
				{
					ScorePlayer4.setText(Integer.toString(mwindow.Player4.getHit()));
					threeHitsCounter = +3;
				}
				
				if (personCounter == 5)
				{
					ScorePlayer5.setText(Integer.toString(mwindow.Player5.getHit()));
					threeHitsCounter = +3;
				}
			}
		}
		});
		btnNoHit.setBounds(94, 353, 75, 23);
		contentPane.add(btnNoHit);
		
	}

	public int numbersgenerator()
	{
		randomNumber  =  rn.nextInt()%21+1;
		if(randomNumber<0)
		{
			randomNumber = randomNumber * (-1);
		}
		
			return  randomNumber;
	}
}

Einzeln funktionieren die beiden Fenster, doch MainWindow kann ShooterGame nicht aufrufen:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at oberflaeche.MainWindow$6.actionPerformed(MainWindow.java:294)....

Sorry für den langen Code und falls ich doch was falsch verfasst habe.

Vielen Dank für euere Hilfe, ich komme ohne euren Support nicht weiter.

Gruß LamaDingo
 

Gucky

Top Contributor
In den ganzen Zeilen, die mit at beginnen steht der sog. StackTrace. In ihm ist die Aufrufhierarchie und die Zeile, in der die Exception geworfen wurde angezeigt. Such mal in Zeile MainWindow 294. Lass dir mal die Zustände der Variablen ausgeben, debugg mal mit dem Debugger.
 

LamaDingo

Neues Mitglied
Servus Gucky,

danke für die Antwort.
Ich verstehe nicht ganz, welche Varialen du meinst?
Diese vielleicht:

protected Player Player1 = new Player();
protected Player Player2 = new Player();
protected Player Player3 = new Player();
protected Player Player4 = new Player();
protected Player Player5 = new Player();
private int counterTextfield = 1;
private boolean buttonPressed = false;
private int rownumber;
private boolean optical_view = false;
private JPanel contentPane;
private JTextField txtPlayer1;
private JTextField txtPlayer2;
private JTextField txtPlayer3;
private JTextField txtPlayer4;
private JTextField txtPlayer5;

Ich weiß wo der Fehler passiert, es sind auch 4 Fehler, da vier Buttons. Zeile 294 verweist auf:
gameWindow.setVisible(true);
Und das bringt mir nichts, da ich hier das andere Fensteraufrufen will, was aber nicht klappt.

Debugger verläuft bei mir gleich wie Run, bzw. was sollte da anders sein?

Vielen Dank für deine Hilfe

Gruß LamaDingo ;)
 

Harry Kane

Top Contributor
In deinem geposteten Code verweist Zeile 294 zwar nicht auf gameWindow.setVisible(true);, aber dafür Zeile 297. Offenbar hast du die Variable gameWindow in der Klasse MainWindow nicht initialisiert.
Ich finde es gelinde gsagt merkwürdig, daß die Klasse MainWindow eine Instanzvariable vom Typ ShooterGame hat und die Klasse ShooterGame eine Instanzvariable vom Typ MainWindow. Wenn diese Instanzvariablen beim Erzeugen der Objekte auch noch neu angelegt statt übergeben werden, ist der Stackoverflowe quasi vorprogrammiert.
 

Harry Kane

Top Contributor
@TE: es ist nicht zweckmässig, die weitere Diskussion als PN laufen zu lassen.
Wenn Du Variablen aus deiner MainWindow-Klasse an deine ShooterGame Klasse übertragen willst, verwende einen setter. Es bringt absolut gar nüscht, in einer Instanz von MainWindow Parameter zu setzen und dann zu versuchen, sie aus einer anderen Instanz zu lesen.
Zeile 38 in deiner Shootergame Klasse (rowsToPlay = mwindow.getRowNumber();) macht wahrscheinlich nicht, was du erwartest, weil sie Daten aus einer MainWindow-Instanz holt, die nie sichtbar gemacht wurde.

Was mir beim Drüberfliegen noch aufgefallen ist: Die Logik in den anonymen ActionListenern, die du an die JButtons btnSingle, btnDouble und btnTriple gehängt hast, scheinen alle was ähnliches zu machen. Du solltest den gemeinsamen Teil der Logik in eine separate Klasse auslagern. Damit könntest du bestimmt ein paar der momentan 250 Zeilen sparen für die ActionListener-Logik sparen.
Außerdem ist in den ActionListenern die Logik in den Blöcken, die mit if (personCounter == anfangen, weitestgehend identisch. Für personCounter wird rowsToPLay incrementiert, für die anderen personCounter nicht. Ausserdem wird abhängig vom personCounter ein anderes ScorePLayer-Textfeld mit Inhalt gefüllt und dazu der HitCount aus einem Player-Objekt beschafft.
Für den ActionListener am plus-JButton in der Klasse MainWindow gilt ähnliches. Statt der Blöcke:
Java:
if (counterTextfield == 1){
    txtPlayer1.setVisible(true);
    contentPane.revalidate();
}
if (counterTextfield == 2){
    txtPlayer2.setVisible(true);
    contentPane.revalidate();
}
//usw....
tuts es nach Anlegen von ein par Arrays auch
Java:
    txtPlayer[countertextField-1].setVisible(true);
    contentPane.revalidate();
}
Und aus
Java:
if (counterTextfield == 1){
    Player1.setName(txtPlayer1.getText());
    Player1.setExist(true);
}
if (counterTextfield == 2){
    Player2.setName(txtPlayer1.getText());
    Player2.setExist(true);
}
//usw....
wird
Java:
    players[countertextField-1].setName(txtPlayer[countertextField-1].getText());
    players[countertextField-1].setExist(true);
}


Ich denke du solltest noch ein paar Basics lernen, und dann dein Design überarbeiten.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
Encera Java FX im Eclipse-Marketplace nichtmehr auffindbar AWT, Swing, JavaFX & SWT 6
CodingBerlin JavaFX Programm läuft nur unter Eclipse AWT, Swing, JavaFX & SWT 1
D Verschieden Scenen ansprechen mit dem Scene Builder und JavaFX (Eclipse) AWT, Swing, JavaFX & SWT 16
G javafx build.fxbuild in eclipse und ANT AWT, Swing, JavaFX & SWT 9
D runnable Jar mit Javafx erstellen(Eclipse) AWT, Swing, JavaFX & SWT 10
C JavaFX mit CSS in Eclipse AWT, Swing, JavaFX & SWT 2
S Swing Schrift sehr klein Ubuntu/eclipse AWT, Swing, JavaFX & SWT 18
A Eclipse Windowbuilder Frameanzeige falsch AWT, Swing, JavaFX & SWT 3
C JavaFX Veränderungen in Scenebuilder in Eclipse als Quellcode anzeigen lassen AWT, Swing, JavaFX & SWT 11
VPChief Swing Eclipse: Nach Exportieren, Button funktioniert nicht mehr AWT, Swing, JavaFX & SWT 26
VPChief Eclipse: Projekt mit src ordner exportieren. AWT, Swing, JavaFX & SWT 76
B eclipse für JavaFx setuppen AWT, Swing, JavaFX & SWT 4
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
F Kein JavaFX mehr im Eclipse Wizard AWT, Swing, JavaFX & SWT 1
L JavaFX Probleme beim Installieren JavaFX11 / JavaFX12 -- Eclipse 2019-03 AWT, Swing, JavaFX & SWT 3
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
B Swing Eclipse is running under 0, but this Java project has a 1.6 Java compliance level, so WindowBuilder AWT, Swing, JavaFX & SWT 2
F FXML Datei aus dem SceneBuilder in Eclipse aufrufen AWT, Swing, JavaFX & SWT 1
R JavaFX lässt sich nicht in Eclipse einbinden AWT, Swing, JavaFX & SWT 4
S download WindowBuilder Pro Eclipse AWT, Swing, JavaFX & SWT 1
N Eclipse - GUI - MacBook - Buttonsichtbarkeit beim Anlegen/Erstellen AWT, Swing, JavaFX & SWT 14
I JAVAFX - CSS - automatische Property- und Methoden-Vorlagen in Eclipse AWT, Swing, JavaFX & SWT 17
I JAVA 8, JAVAFX und Eclipse – muss Eclipse extra eingerichtet werden? AWT, Swing, JavaFX & SWT 9
Z ProgressBar in Eclipse mit Wizard page? AWT, Swing, JavaFX & SWT 1
C Applet Applet funktioniert in Eclipse aber nicht in Browser AWT, Swing, JavaFX & SWT 1
J JavaFX Anwendung läuft in eclipse, nicht aber exportiert AWT, Swing, JavaFX & SWT 2
R Eclipse GUI Programmieren AWT, Swing, JavaFX & SWT 8
P Ubuntu - Eclipse - Windowbuilder AWT, Swing, JavaFX & SWT 0
M 3D-Grafik Mac Java 3D in Eclipse Exception AWT, Swing, JavaFX & SWT 0
O Eclipse Hitbox(en) AWT, Swing, JavaFX & SWT 6
D Robot Programm mit Escape abbrechen (aus Eclipse heraus) AWT, Swing, JavaFX & SWT 2
M LookAndFeel Oberfläche wie Eclipse/Business Objects oder Solvatio AWT, Swing, JavaFX & SWT 2
N Programm läuft perfekt in Eclipse aber nicht in .JAR AWT, Swing, JavaFX & SWT 3
T SWT benötige den richtigen SWT style --> org.eclipse.swt.SWT.* AWT, Swing, JavaFX & SWT 2
C Eclipse Filter-Muster AWT, Swing, JavaFX & SWT 2
H org.eclipse.swt.widgets.Scale MouseRelease listener AWT, Swing, JavaFX & SWT 1
H org.eclipse.swt.Slider ohne Buttons AWT, Swing, JavaFX & SWT 1
H org.eclipse.swt.widgets.Slider und negative Werte AWT, Swing, JavaFX & SWT 3
B JAVAFX und CSS Datei in Eclipse AWT, Swing, JavaFX & SWT 4
M Swing in Eclipse AWT, Swing, JavaFX & SWT 1
A Eclipse Windowbuilder AWT, Swing, JavaFX & SWT 2
B JavaFX FXML - Eclipse einrichten AWT, Swing, JavaFX & SWT 2
G Eclipse: Design Tab wird nicht mehr angezeigt AWT, Swing, JavaFX & SWT 4
S Swing SplitButton wie in Eclipse AWT, Swing, JavaFX & SWT 5
P JApplet verhält sich im Browser anders als im Eclipse (AppletViewer) AWT, Swing, JavaFX & SWT 3
A Kinect und Eclipse AWT, Swing, JavaFX & SWT 2
K Eclipse Layout (Gimp Layout, Tiled Layout...) AWT, Swing, JavaFX & SWT 4
J SWING - Programm ohne Eclipse etc. starten AWT, Swing, JavaFX & SWT 7
J SWT in eclipse importieren AWT, Swing, JavaFX & SWT 11
K Eclipse-Java Export/Import mit Oberfläche AWT, Swing, JavaFX & SWT 2
T eclipse.swt.widgets saveState NPE AWT, Swing, JavaFX & SWT 5
V Laden einer Bitmap / Eclipse-Problem? AWT, Swing, JavaFX & SWT 4
K 2D-Grafik Punkt in Eclipse AWT, Swing, JavaFX & SWT 4
S JavaFX 2.0 in Eclipse RAP??? AWT, Swing, JavaFX & SWT 6
M Eclipse-Platform Combo-Binding für User-Einträge AWT, Swing, JavaFX & SWT 9
D VE in Eclipse mag einfach nicht funktionieren AWT, Swing, JavaFX & SWT 5
S FileFilter Problem Eclipse AWT, Swing, JavaFX & SWT 7
V Eclipse View Right-Click Menu hinzufügen AWT, Swing, JavaFX & SWT 2
lumo SWT Exception in thread "main" org.eclipse.swt.SWTError: No more handles AWT, Swing, JavaFX & SWT 3
T SWT Drag&Drop: Eclipse FileTransfer mit Icons AWT, Swing, JavaFX & SWT 14
M GEF und Eclipse Plugin schwierigkeiten AWT, Swing, JavaFX & SWT 2
B Debugging in Eclipse, Aufrufreihenfolge AWT, Swing, JavaFX & SWT 3
E Wo findet man: org.eclipse.core.runtime.ListenerList AWT, Swing, JavaFX & SWT 4
S [Eclipse RCP] Relativer Pfad AWT, Swing, JavaFX & SWT 8
Binary.Coder Netbeans GUI zu Eclipse (schon gegooglet und einiges ausprobiert). AWT, Swing, JavaFX & SWT 4
P SWT Eclipse Draw2D Drag and Drop (ruckelt) AWT, Swing, JavaFX & SWT 4
G Große dynamische ContextMenus erzeugen (Eclipse RCP) AWT, Swing, JavaFX & SWT 4
Crashbreaker SWT Frames wie bei Eclipse AWT, Swing, JavaFX & SWT 43
J Swing Pro WindowBuilder in Eclipse AWT, Swing, JavaFX & SWT 2
D Problem mit SmartGWT (2.4) und Eclipse (3.6) AWT, Swing, JavaFX & SWT 6
J SWT JFace Tree in Section unsichtbar (Eclipse Forms) AWT, Swing, JavaFX & SWT 5
M 3D-Grafik Java3D-Application als executable .jar exportieren (Eclipse) AWT, Swing, JavaFX & SWT 5
K SWT oder AWT als Download für Eclipse AWT, Swing, JavaFX & SWT 5
dzim SWT Layout mit Sections aus Eclipse Forms AWT, Swing, JavaFX & SWT 17
A SWT Eclipse JFace Binding TreeViewer AWT, Swing, JavaFX & SWT 4
A Suche: Eclipse-GUI-Layout AWT, Swing, JavaFX & SWT 5
E JavaHelp mit Eclipse AWT, Swing, JavaFX & SWT 2
B SWT Hello World-Anwendung mit GUI in Eclipse -Problem mit Import von SWT AWT, Swing, JavaFX & SWT 9
J eclipse/Visual Editor: Auf Felder/Methoden vom Hauptframe zugreifen AWT, Swing, JavaFX & SWT 4
M Swing Memory Spiel in Eclipse AWT, Swing, JavaFX & SWT 5
U Netbeans GUI nach Eclipse AWT, Swing, JavaFX & SWT 7
J Anwendung von Swing nach SWT bzw. Eclipse portieren AWT, Swing, JavaFX & SWT 3
G Look And Feel in Eclipse AWT, Swing, JavaFX & SWT 2
D Swing eine Art vorschlagsfenster wie in eclipse bei "." AWT, Swing, JavaFX & SWT 5
M SWT pack() von org.eclipse.swt.widgets.Control AWT, Swing, JavaFX & SWT 8
H Eclipse View / Window Layout AWT, Swing, JavaFX & SWT 3
S Dropdown-Menü wie auf der Eclipse-Toolbar AWT, Swing, JavaFX & SWT 7
T [Applet] startet in Eclipse aber nicht im Browser AWT, Swing, JavaFX & SWT 2
D Autovervollständigung wie bei Dreamweaver/Eclipse AWT, Swing, JavaFX & SWT 4
K Eclipse Visual Editor rendert die Komponenten nicht richtig AWT, Swing, JavaFX & SWT 2
K nervende eigenschaft von eclipse AWT, Swing, JavaFX & SWT 3
P Programm terminiert nicht (unter Eclipse) AWT, Swing, JavaFX & SWT 5
I Spezieller Knopf in Swing? Soll sein wie der Run in Eclipse. AWT, Swing, JavaFX & SWT 4
S Eclipse Icon Set AWT, Swing, JavaFX & SWT 6
T SWT/Eclipse Form Controls zur Laufzeit hinzufügen,GridLayout AWT, Swing, JavaFX & SWT 4
F Bilder im Quellcode verstecken - Eclipse AWT, Swing, JavaFX & SWT 15
W java.lang.NoClassDefFoundError: org/eclipse/swt/graphics/Dev AWT, Swing, JavaFX & SWT 1
D Tooltips in Eclipse AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben