Hallo liebe Leute.
Ich wollte für mich einen kleinen Würfelsimulator zusammenbasteln, der in einem kleinen Fenster läuft. Man soll dann auf den Button drücken können, der den entsprechenden Würfel simuliert. Das Ergebnis soll in ein Textfeld gesetzt werden. Ebenfalls soll aus diesem Textfeld vorher das Ergebnis genommen werden und in ein weiteres Textfeld eingefügt werden welches sogesehen das vorige Ergebnis speichert. Nun habe ich dieses kleine programm fertig gestellt, jedoch entsteht bei mir eine NullPointerException, sobald ich einen meiner Button drücke.
Anbei schonmal der Code
Fenster Klasse:
Und die Controller Klasse:
Wenn die Fehlermeldung zeigt mir auch zwei Lines an an denen der Fehler sein soll.
Drücke ich z.B. den W4 Button so liegen die Fehler bei folgenden Zeilen
Hoffe das ist nicht zu unübersichtlich!
Vielen Dank schon einmal im vorraus für eure Überlegungen.
MFG,
Vincentthe0ne
Ich wollte für mich einen kleinen Würfelsimulator zusammenbasteln, der in einem kleinen Fenster läuft. Man soll dann auf den Button drücken können, der den entsprechenden Würfel simuliert. Das Ergebnis soll in ein Textfeld gesetzt werden. Ebenfalls soll aus diesem Textfeld vorher das Ergebnis genommen werden und in ein weiteres Textfeld eingefügt werden welches sogesehen das vorige Ergebnis speichert. Nun habe ich dieses kleine programm fertig gestellt, jedoch entsteht bei mir eine NullPointerException, sobald ich einen meiner Button drücke.
Anbei schonmal der Code
Fenster Klasse:
Java:
public class WürfelFenster extends Frame {
private WürfelController Wcrtl;
Button w4, w6, w8, w10, w12, w20;
private Label erg, vori;
TextField ergebnis;
TextField voriges;
GridBagLayout grid = new GridBagLayout();
GridBagConstraints straints = new GridBagConstraints();
/**
* Konstruktor für das Fenster
*/
public WürfelFenster(WürfelController Wcrtl){
this.Wcrtl = Wcrtl;
setTitle("D&D Würfelsimulator");
setLayout(grid);
setSize(300, 300);
addWindowListener(new WürfelController());
w4 = new Button("W4");
w6 = new Button("W6");
w8 = new Button("W8");
w10 = new Button("W10");
w12 = new Button("W12");
w20 = new Button("W20");
erg = new Label("Ergebnis: ");
vori = new Label("Voriges Ergebnis: ");
ergebnis = new TextField("1");
voriges = new TextField("1");
ergebnis.setEnabled(false);
voriges.setEnabled(false);
// Nicht wichtiger Code wurde weggelassen
setVisible(true);
addActionListeners();
}
/**
* Actionlistener für den Buttondruck
*/
private void addActionListeners() {
w4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Wcrtl.zustandButtonPressed(Zustand.W4);
}
});
w6.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Wcrtl.zustandButtonPressed(Zustand.W6);
}
});
w8.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Wcrtl.zustandButtonPressed(Zustand.W8);
}
});
w10.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Wcrtl.zustandButtonPressed(Zustand.W10);
}
});
w12.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Wcrtl.zustandButtonPressed(Zustand.W12);
}
});
w20.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Wcrtl.zustandButtonPressed(Zustand.W20);
}
});
}
public enum Zustand{W4, W6, W8, W10, W12, W20 }
}
Und die Controller Klasse:
Java:
/**
* @author Marcel
*
*/
public class WürfelController extends WindowAdapter {
private WürfelFenster view;
public void zustandButtonPressed(Zustand zustand){
Random rnd = new Random();
int z;
switch(zustand){
case W4:
view.voriges.setText(view.ergebnis.getText());
z = rnd.nextInt(4)+1;
view.ergebnis.setText(Integer.toString(z));
break;
case W6:
view.voriges.setText(view.ergebnis.getText());
z = rnd.nextInt(6)+1;
view.ergebnis.setText(Integer.toString(z));
break;
case W8:
view.voriges.setText(view.ergebnis.getText());
z = rnd.nextInt(8)+1;
view.ergebnis.setText(Integer.toString(z));
break;
case W10:
view.voriges.setText(view.ergebnis.getText());
z = rnd.nextInt(10)+1;
view.ergebnis.setText(Integer.toString(z));
break;
case W12:
view.voriges.setText(view.ergebnis.getText());
z = rnd.nextInt(12)+1;
view.ergebnis.setText(Integer.toString(z));
break;
case W20:
view.voriges.setText(view.ergebnis.getText());
z = rnd.nextInt(20)+1;
view.ergebnis.setText(Integer.toString(z));
break;
default:
break;
}
}
@Override
public void windowClosing(WindowEvent e) {
e.getWindow().dispose();
System.exit(0);
}
}
Wenn die Fehlermeldung zeigt mir auch zwei Lines an an denen der Fehler sein soll.
Drücke ich z.B. den W4 Button so liegen die Fehler bei folgenden Zeilen
Java:
case W4:
view.voriges.setText(view.ergebnis.getText()); // Fehlerhafte Zeile
z = rnd.nextInt(4)+1;
view.ergebnis.setText(Integer.toString(z));
break;
w4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Wcrtl.zustandButtonPressed(Zustand.W4); // Fehlerhafte Zeile
}
});
Hoffe das ist nicht zu unübersichtlich!
Vielen Dank schon einmal im vorraus für eure Überlegungen.
MFG,
Vincentthe0ne