Also meine Frage ist eigentlich ziemlich einfach. Wie kann ich in einer Anderen Methode die Inhalte aus meinem JFrame aufrufen. Ich pack mal meinen Code auszugsweiße hier dazu:
[CODE lang="java" title="JFrame erstellen"]import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.Timer;
public class Fenster {
File changelogFile;
ImageIcon logoIcon = new ImageIcon(getClass().getClassLoader().getResource("Resources/Logo.png"));
JFrame fenster;
JTextField userEingabeTF;
JTextField timerTF;
JTextField aufgabeTF, loesungTF = new JTextField();
JTextField aufgabenRichtigTF, aufgabenFalschTF, richtigTF, falschTF;
JButton uebungStartBtn = new JButton(), loesungAbgebenBtn;
JButton uebungAbbrechenBtn, resetBtn;
JButton changelogBtn;
JCheckBox dividierenBox = new JCheckBox(), multiplizierenBox = new JCheckBox(), addierenBox = new JCheckBox(), subtrahierenBox = new JCheckBox();
int ergebnisseFalschInt, ergebnisseRichtigInt, aufgabenInsgesamtInt;
int zeitInt;
int count;
int zahl1Int, zahl2Int;
int ergebnisInt;
int rechenZeichenInt;
double ergebnisDouble;
double ergebnisOhneFormatDouble;
double zahl1Double, zahl2Double;
String zahl1String, zahl2String, ergebnisString;
String userloesungString;
String ergebnisseRichtigString, ergebnisseFalschString, aufgabenGesamtString;
String aufgabenInsgesamtString;
boolean rechenartGewähltBoolean;
boolean enterGedrücktBoolean = false;
boolean istErgebnisDezimalBoolean = false;
boolean negativSubtraktionBoolean = false;
Random random = new Random();
public void FensterCreate() {
fenster = new JFrame("Kopfrechnen BETA 1.1.7");
fenster.setSize(400, 600);
fenster.setLayout(null);
fenster.setResizable(false);
fenster.setLocationRelativeTo(null);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.setIconImage(logoIcon.getImage());
dividierenBox.setText("Dividieren");
dividierenBox.setLocation(80, 80);
dividierenBox.setSize(120, 30);
multiplizierenBox.setText("Multiplizieren");
multiplizierenBox.setLocation(200, 80);
multiplizierenBox.setSize(120, 30);
addierenBox.setText("Addieren");
addierenBox.setLocation(80, 110);
addierenBox.setSize(120, 30);
subtrahierenBox.setText("Subtrahieren");
subtrahierenBox.setLocation(200, 110);
subtrahierenBox.setSize(120, 30);
aufgabeTF = new JTextField();
aufgabeTF.setSize(200, 30);
aufgabeTF.setEditable(false);
aufgabeTF.setLocation(100, 250);
loesungTF.setSize(200, 30);
loesungTF.setLocation(100, 290);
loesungTF.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
uebungStartBtn.setText("Start");
uebungStartBtn.setSize(70, 30);
uebungStartBtn.setLocation(230, 210);
loesungAbgebenBtn = new JButton("Abgeben");
loesungAbgebenBtn.setSize(90, 30);
loesungAbgebenBtn.setLocation(210, 330);
loesungAbgebenBtn.setEnabled(false);
timerTF = new JTextField();
timerTF.setSize(50, 30);
timerTF.setEditable(false);
timerTF.setLocation(310, 20);
richtigTF = new JTextField("Richtige:");
richtigTF.setLocation(120, 390);
richtigTF.setSize(70, 30);
richtigTF.setEditable(false);
richtigTF.setBorder(null);
richtigTF.setBackground(null);
aufgabenRichtigTF = new JTextField();
aufgabenRichtigTF.setEditable(false);
aufgabenRichtigTF.setSize(70, 30);
aufgabenRichtigTF.setLocation(120, 420);
falschTF = new JTextField("Falsche:");
falschTF.setLocation(210, 390);
falschTF.setSize(70, 30);
falschTF.setEditable(false);
falschTF.setBorder(null);
falschTF.setBackground(null);
aufgabenFalschTF = new JTextField();
aufgabenFalschTF.setEditable(false);
aufgabenFalschTF.setSize(70, 30);
aufgabenFalschTF.setLocation(210, 420);
uebungAbbrechenBtn = new JButton("Abbrechen");
uebungAbbrechenBtn.setEnabled(false);
uebungAbbrechenBtn.setSize(100, 30);
uebungAbbrechenBtn.setLocation(210, 470);
resetBtn = new JButton("Neustart");
resetBtn.setEnabled(false);
resetBtn.setSize(100, 30);
resetBtn.setLocation(210, 510);
changelogBtn = new JButton("Neuerungen");
changelogBtn.setSize(100, 30);
changelogBtn.setLocation(50, 510);
fenster.add(dividierenBox);
fenster.add(multiplizierenBox);
fenster.add(addierenBox);
fenster.add(subtrahierenBox);
fenster.add(aufgabeTF);
fenster.add(loesungTF);
fenster.add(uebungStartBtn);
fenster.add(loesungAbgebenBtn);
fenster.add(timerTF);
fenster.add(richtigTF);
fenster.add(aufgabenRichtigTF);
fenster.add(falschTF);
fenster.add(aufgabenFalschTF);
fenster.add(uebungAbbrechenBtn);
fenster.add(resetBtn);
fenster.add(changelogBtn);
fenster.setVisible(true);
dividierenBox.setVisible(true);
multiplizierenBox.setVisible(true);
addierenBox.setVisible(true);
subtrahierenBox.setVisible(true);
aufgabeTF.setVisible(true);
loesungTF.setVisible(true);
uebungStartBtn.setVisible(true);
loesungAbgebenBtn.setVisible(true);
timerTF.setVisible(true);
richtigTF.setVisible(true);
aufgabenRichtigTF.setVisible(true);
falschTF.setVisible(true);
aufgabenFalschTF.setVisible(true);
uebungAbbrechenBtn.setVisible(true);
resetBtn.setVisible(true);
changelogBtn.setVisible(true);
ActionHandler actionHandler = new ActionHandler();
uebungStartBtn.addActionListener(actionHandler);
loesungAbgebenBtn.addActionListener(actionHandler);
loesungTF.addActionListener(actionHandler);
dividierenBox.addActionListener(actionHandler);
multiplizierenBox.addActionListener(actionHandler);
addierenBox.addActionListener(actionHandler);
subtrahierenBox.addActionListener(actionHandler);
uebungAbbrechenBtn.addActionListener(actionHandler);
resetBtn.addActionListener(actionHandler);
changelogBtn.addActionListener(actionHandler);
}[/CODE]
Also das ist das JFrame wie es erzeugt wird. Dann wird im ActionHandler eine andere Methode aufgerufen. hier auch mal ein Auszug daraus:
Hier sollte halt die AbbrechenDivisions Methode in der Klasse in der das JFrame aufgerufen wird aufgerufen.
[CODE lang="java" title="Andere Klasse die Methode aufruft"]else if (actionEvent.getSource() == dividierenBox && dividierenBox.isSelected() == true) {
dividierenBox.setEnabled(false);
multiplizierenBox.setEnabled(false);
addierenBox.setEnabled(false);
subtrahierenBox.setEnabled(false);
uebungStartBtn.setEnabled(false);
loesungTF.setEnabled(false);
dividierenKlasse.dividierenFenster();
}[/CODE]
Hier ist halt das Problem das ich ne NullpointerException Bekomme und er eben nicht die CheckBoxen Enabled oder sonstiges. Ich verstehe ja auch warum aber nicht wie das Lösen könnte.
[CODE lang="java" title="JFrame erstellen"]import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.Timer;
public class Fenster {
File changelogFile;
ImageIcon logoIcon = new ImageIcon(getClass().getClassLoader().getResource("Resources/Logo.png"));
JFrame fenster;
JTextField userEingabeTF;
JTextField timerTF;
JTextField aufgabeTF, loesungTF = new JTextField();
JTextField aufgabenRichtigTF, aufgabenFalschTF, richtigTF, falschTF;
JButton uebungStartBtn = new JButton(), loesungAbgebenBtn;
JButton uebungAbbrechenBtn, resetBtn;
JButton changelogBtn;
JCheckBox dividierenBox = new JCheckBox(), multiplizierenBox = new JCheckBox(), addierenBox = new JCheckBox(), subtrahierenBox = new JCheckBox();
int ergebnisseFalschInt, ergebnisseRichtigInt, aufgabenInsgesamtInt;
int zeitInt;
int count;
int zahl1Int, zahl2Int;
int ergebnisInt;
int rechenZeichenInt;
double ergebnisDouble;
double ergebnisOhneFormatDouble;
double zahl1Double, zahl2Double;
String zahl1String, zahl2String, ergebnisString;
String userloesungString;
String ergebnisseRichtigString, ergebnisseFalschString, aufgabenGesamtString;
String aufgabenInsgesamtString;
boolean rechenartGewähltBoolean;
boolean enterGedrücktBoolean = false;
boolean istErgebnisDezimalBoolean = false;
boolean negativSubtraktionBoolean = false;
Random random = new Random();
public void FensterCreate() {
fenster = new JFrame("Kopfrechnen BETA 1.1.7");
fenster.setSize(400, 600);
fenster.setLayout(null);
fenster.setResizable(false);
fenster.setLocationRelativeTo(null);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.setIconImage(logoIcon.getImage());
dividierenBox.setText("Dividieren");
dividierenBox.setLocation(80, 80);
dividierenBox.setSize(120, 30);
multiplizierenBox.setText("Multiplizieren");
multiplizierenBox.setLocation(200, 80);
multiplizierenBox.setSize(120, 30);
addierenBox.setText("Addieren");
addierenBox.setLocation(80, 110);
addierenBox.setSize(120, 30);
subtrahierenBox.setText("Subtrahieren");
subtrahierenBox.setLocation(200, 110);
subtrahierenBox.setSize(120, 30);
aufgabeTF = new JTextField();
aufgabeTF.setSize(200, 30);
aufgabeTF.setEditable(false);
aufgabeTF.setLocation(100, 250);
loesungTF.setSize(200, 30);
loesungTF.setLocation(100, 290);
loesungTF.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
uebungStartBtn.setText("Start");
uebungStartBtn.setSize(70, 30);
uebungStartBtn.setLocation(230, 210);
loesungAbgebenBtn = new JButton("Abgeben");
loesungAbgebenBtn.setSize(90, 30);
loesungAbgebenBtn.setLocation(210, 330);
loesungAbgebenBtn.setEnabled(false);
timerTF = new JTextField();
timerTF.setSize(50, 30);
timerTF.setEditable(false);
timerTF.setLocation(310, 20);
richtigTF = new JTextField("Richtige:");
richtigTF.setLocation(120, 390);
richtigTF.setSize(70, 30);
richtigTF.setEditable(false);
richtigTF.setBorder(null);
richtigTF.setBackground(null);
aufgabenRichtigTF = new JTextField();
aufgabenRichtigTF.setEditable(false);
aufgabenRichtigTF.setSize(70, 30);
aufgabenRichtigTF.setLocation(120, 420);
falschTF = new JTextField("Falsche:");
falschTF.setLocation(210, 390);
falschTF.setSize(70, 30);
falschTF.setEditable(false);
falschTF.setBorder(null);
falschTF.setBackground(null);
aufgabenFalschTF = new JTextField();
aufgabenFalschTF.setEditable(false);
aufgabenFalschTF.setSize(70, 30);
aufgabenFalschTF.setLocation(210, 420);
uebungAbbrechenBtn = new JButton("Abbrechen");
uebungAbbrechenBtn.setEnabled(false);
uebungAbbrechenBtn.setSize(100, 30);
uebungAbbrechenBtn.setLocation(210, 470);
resetBtn = new JButton("Neustart");
resetBtn.setEnabled(false);
resetBtn.setSize(100, 30);
resetBtn.setLocation(210, 510);
changelogBtn = new JButton("Neuerungen");
changelogBtn.setSize(100, 30);
changelogBtn.setLocation(50, 510);
fenster.add(dividierenBox);
fenster.add(multiplizierenBox);
fenster.add(addierenBox);
fenster.add(subtrahierenBox);
fenster.add(aufgabeTF);
fenster.add(loesungTF);
fenster.add(uebungStartBtn);
fenster.add(loesungAbgebenBtn);
fenster.add(timerTF);
fenster.add(richtigTF);
fenster.add(aufgabenRichtigTF);
fenster.add(falschTF);
fenster.add(aufgabenFalschTF);
fenster.add(uebungAbbrechenBtn);
fenster.add(resetBtn);
fenster.add(changelogBtn);
fenster.setVisible(true);
dividierenBox.setVisible(true);
multiplizierenBox.setVisible(true);
addierenBox.setVisible(true);
subtrahierenBox.setVisible(true);
aufgabeTF.setVisible(true);
loesungTF.setVisible(true);
uebungStartBtn.setVisible(true);
loesungAbgebenBtn.setVisible(true);
timerTF.setVisible(true);
richtigTF.setVisible(true);
aufgabenRichtigTF.setVisible(true);
falschTF.setVisible(true);
aufgabenFalschTF.setVisible(true);
uebungAbbrechenBtn.setVisible(true);
resetBtn.setVisible(true);
changelogBtn.setVisible(true);
ActionHandler actionHandler = new ActionHandler();
uebungStartBtn.addActionListener(actionHandler);
loesungAbgebenBtn.addActionListener(actionHandler);
loesungTF.addActionListener(actionHandler);
dividierenBox.addActionListener(actionHandler);
multiplizierenBox.addActionListener(actionHandler);
addierenBox.addActionListener(actionHandler);
subtrahierenBox.addActionListener(actionHandler);
uebungAbbrechenBtn.addActionListener(actionHandler);
resetBtn.addActionListener(actionHandler);
changelogBtn.addActionListener(actionHandler);
}[/CODE]
Also das ist das JFrame wie es erzeugt wird. Dann wird im ActionHandler eine andere Methode aufgerufen. hier auch mal ein Auszug daraus:
Code:
} else if (actionEvent.getSource() == abbrechenBTN && dividierenBoolean == true) {
dividierenBoolean = false;
zahlEingabeFrame.dispose();
fensterKlasse.AbbrechenDivision();
}
Hier sollte halt die AbbrechenDivisions Methode in der Klasse in der das JFrame aufgerufen wird aufgerufen.
[CODE lang="java" title="Andere Klasse die Methode aufruft"]else if (actionEvent.getSource() == dividierenBox && dividierenBox.isSelected() == true) {
dividierenBox.setEnabled(false);
multiplizierenBox.setEnabled(false);
addierenBox.setEnabled(false);
subtrahierenBox.setEnabled(false);
uebungStartBtn.setEnabled(false);
loesungTF.setEnabled(false);
dividierenKlasse.dividierenFenster();
}[/CODE]
Hier ist halt das Problem das ich ne NullpointerException Bekomme und er eben nicht die CheckBoxen Enabled oder sonstiges. Ich verstehe ja auch warum aber nicht wie das Lösen könnte.
Zuletzt bearbeitet von einem Moderator: