Hallo Forum,
ich sitze gerade an einem Sudoku-Leseprogramm. Die Logik möchte ich gerade anfangen, aber ich habe Probleme damit, den Text, den ich in den 81 Textfeldern habe, abzurufen und ich weiß nicht wie ich das umgehen kann, bzw. wie ich da eine Getter-Methode generieren soll. Hier ist mal der ganze Code.
Das Problem ist, dass ich, wenn ich versuche, die Textfelder auszulesen eine NullPointerException bekomme, was ja heißt, dass dieses String-Array-Objekt nicht(mehr) existiert. Wie komm ich an die Werte?
Klasse Main:
Klasse Gui:
Klasse Berechnungen:
Klasse ActionHandler:
MfG
ich sitze gerade an einem Sudoku-Leseprogramm. Die Logik möchte ich gerade anfangen, aber ich habe Probleme damit, den Text, den ich in den 81 Textfeldern habe, abzurufen und ich weiß nicht wie ich das umgehen kann, bzw. wie ich da eine Getter-Methode generieren soll. Hier ist mal der ganze Code.
Das Problem ist, dass ich, wenn ich versuche, die Textfelder auszulesen eine NullPointerException bekomme, was ja heißt, dass dieses String-Array-Objekt nicht(mehr) existiert. Wie komm ich an die Werte?
Klasse Main:
Java:
public class Main {
public static void main(String[] args) {
Gui sudoku = new Gui();
sudoku.setVisible(true);
}
}
Klasse Gui:
Java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Gui extends JFrame{
JPanel oberflaeche = new JPanel(); //Hauptpanel
JPanel spielfeld = new JPanel(); //kommt auf das Hauptpanel
JPanel bedienfeld = new JPanel(); //kommt auf das Hauptpanel unter das Spielfeld
//-----------------------------------------------------------------------------------------------------
JPanel zahlenfeld[][] = new JPanel[9][9]; // 81 Stck davon auf Spielfeld
//-----------------------------------------------------------------------------------------------------
JTextField edtZahlen[][] = new JTextField[9][9]; //jeweils ein Textfeld kommt auf jeweils ein Zahlenfeld
//-----------------------------------------------------------------------------------------------------
BorderLayout layout = new BorderLayout();
GridLayout gamelayout = new GridLayout(9, 9);
//-----------------------------------------------------------------------Layouts----------
JButton kontrollieren = new JButton("kontrollieren");
JButton schliessen = new JButton("Schließen");
//---------------------------------------------------------------------------Buttons----------------------
public Gui()
{
ActionListener al = new ActionHandler(this);
setTitle("SudokuReader");
setSize(400, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
oberflaeche.setLayout(layout);
bedienfeld.setLayout(new BorderLayout());
add(oberflaeche);
oberflaeche.add(bedienfeld,BorderLayout.SOUTH);
bedienfeld.add(kontrollieren,BorderLayout.WEST);
bedienfeld.add(schliessen,BorderLayout.EAST);
spielfeld.setLayout(gamelayout);
oberflaeche.add(spielfeld,BorderLayout.CENTER);
kontrollieren.addActionListener(al);
schliessen.addActionListener(al);
setResizable(false);
//-------------------------------------------------------------
//Erzeugung des kompletten Spielfeldes
for(int i = 0; i<9;i++){
for(int j = 0; j<9; j++){
zahlenfeld[i][j] = new JPanel();
spielfeld.add(zahlenfeld[i][j]);
edtZahlen[i][j] = new JTextField(2);
zahlenfeld[i][j].add(edtZahlen[i][j]);
}
}
//-----------------------------------------------------------
//pack();
add(oberflaeche);
}
}
Klasse Berechnungen:
Java:
public class Berechnungen {
static Gui fenster;
public static void pruefeZeilen()
{
System.out.println(fenster.edtZahlen[0][0].getText() + "Dies ist ein Test");
}
}
Klasse ActionHandler:
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ActionHandler implements ActionListener{
Gui fenster;
public ActionHandler(Gui fenster)
{
this.fenster = fenster;
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(fenster.kontrollieren));
Berechnungen.pruefeZeilen();
}
}
MfG