ich habe ein kleines Problem bei meinem Programm und stehe völlig auf dem Schlauch...
Ich habe drei Klassen:
- Player
- PlayerPanelSingle
- Game
Nun sieht es so aus, dass ich in PlayerPanelSingle einen JTextField habe, aus den ich im Game einen String rausholen möchte und diesen String anschließend im Game für den Konstruktor von Player verwenden. Wenn ich dies in PlayerPanelSingle mache funktioniert es ideal, sobald ich das ganze zu der Klasse Game verlagern will, bekomme ich sofort eine NullPointer Exception. Kann mir vielleicht jemand von euch einen Tipp geben, wo mein Denkfehler liegt?
Dies ist das relevante von der Klasse "Player"
Java:
privateString name;privatechar symbol;privateboolean current;publicStringgetName(){return name;}//getNamepublicvoidsetName(String insertName){
name = insertName;}//setName
So hole ich die Variable direkt im PlayerPanelSingle raus, hier funktioniert´s noch
Java:
Player player =newPlayer();setTmp(playerName.getText());//Text aus dem JTextField wird zwischen gespeichert
player.setName(getTmp());// Und anschließend in den SetName von Player eingeschriebenSystem.out.println(player.getName());//It works!
Komischerweise, wenn ich das ganze im Game so ausführe, kriege ich die NullPointer:
Java:
Player player =newPlayer();
pps.setTmp(pps.playerName.getText());
player.setName(pps.getTmp());System.out.println(player.getName());
Kann mir jemand einen Hinweis geben, wie man das lösen kann?
Vielen Dank im Voraus!
Das Problem werden nicht die Getter/Setter sein. Ich würde drauf tippen, das pps oder pps.playerName null sind, dafür müsste man aber mehr Code sehen, und wissen, in welcher Zeile genau der Fehler auftritt
Ok, hier ist die Game.
Eine komische Sache fällt mir schon auf, dass bei der Übergabe vom Symbol kann ich diese Variable sauber reinsetzen und rausholen, das aber nicht über diesen JTextField geht...
Zeile 59-61
Java:
package spielOOP;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.AbstractAction;importjavax.swing.Action;publicclassGame{Board b =newBoard();Options o =newOptions();PlayerPanelSingle pps;Player player;publicString symbol;// private String name;Game(){//Konstruktor//An dieser Stelle wird das betätigen des Buttons "START" empfangenListenToActions();}publicvoidListenToActions(){Action newGame =newStartGameAction(this);
b.setReset.addActionListener(newGame);Action saveMode =newSaveMode(this);
pps.save.addActionListener(saveMode);Action play =newPlayAction(this);for(int i =0; i < b.gameField.length; i++){for(int j =0; j < b.gameField.length; j++){
b.gameField[i][j].addActionListener(play);}}//for}//Listen to Actions//MUSS NOCH BEARBEITET WERDENpublicvoidgenerate(){for(int i =0; i < b.gameField.length; i++){for(int j =0; j < b.gameField.length; j++){this.b.gameField[i][j].setEnabled(true);this.b.gameField[i][j].setText(" ");}//for j}//for i}publicvoidgeneratePlayer(){//Hier werden die Spieler erstellt if(pps.checkFirst.isSelected()){Player player =newPlayer();String insertName = pps.getPlayerName();
player.setName(insertName);System.out.println(player.getName());// player.setName("Spieler1");
player.setSymbol("X");
symbol = player.getSymbol();
player.setCurrent(true);System.out.println(player.getName()+" "+ player.getSymbol()+" "+ player.getCurrent());}else{Player player =newPlayer();
player.setName("Spieler1");
player.setSymbol("O");
symbol = player.getSymbol();
player.setCurrent(false);// System.out.println(player.getName() + " " + player.getSymbol() + " " + player.getCurrent());}}//playpublicvoidplay(){Player player =newPlayer();if(b.gameField[0][0].getModel().isArmed()){
b.gameField[0][0].setText(symbol);}elseif(b.gameField[0][1].getModel().isArmed()){
b.gameField[0][1].setText(symbol);}elseif(b.gameField[0][2].getModel().isArmed()){
b.gameField[0][2].setText(symbol);}elseif(b.gameField[1][0].getModel().isArmed()){
b.gameField[1][0].setText(symbol);}elseif(b.gameField[1][1].getModel().isArmed()){
b.gameField[1][1].setText(symbol);}elseif(b.gameField[1][2].getModel().isArmed()){
b.gameField[1][2].setText(symbol);}elseif(b.gameField[2][0].getModel().isArmed()){
b.gameField[2][0].setText(symbol);}elseif(b.gameField[2][1].getModel().isArmed()){
b.gameField[2][1].setText(symbol);}elseif(b.gameField[2][2].getModel().isArmed()){
b.gameField[2][2].setText(symbol);}}//play//############################################## ABSTRACT ACTIONS ################################################ classStartGameActionextendsAbstractAction{privateGame game;privateBoard board;publicStartGameAction(Game game){this.game = game;}publicvoidactionPerformed(ActionEvent e ){
game.generate();}}//Start Game ActionpublicclassSaveModeextendsAbstractAction{privateGame game;publicSaveMode(Game game){this.game = game;}publicvoidactionPerformed(ActionEvent e ){
game.generatePlayer();}}//Save ModepublicclassPlayActionextendsAbstractAction{privateGame game;publicPlayAction(Game game){this.game = game;}publicvoidactionPerformed(ActionEvent e ){
game.play();}}//Play Action}//Game