Hallo Zusammen ich habe ein Problem mit einem RadioButton und ich finde einfach keine Lösung.
Kurz zur Problembeschreibung:
Ich erstelle einen JFrame und möchte mir der Maus dort Rechtecke generieren.
Das klappt auch soweit, aber um mehrere verschiedene Objekte mit eine Mausaktion zu erstellen möchte ich in einem zweiten Fenster mit Radio Buttons abfragen was in JFrame generiert werden soll.
Wenn ich das so programmiere wie ich es mir denke bekomme ich aber beim Klicken eine NullPointerException. Ich kann mir aber nicht erklären warum.
Die Exception kommt beim Aufruf der Merhode public boolean getRadioTrans().
Habt ihr vielleicht eine elegantere Lösung als das mit RadioButtons zu lösen ?
Für eure Hilfe wäre ich sehr dankbar.
Folgend mein Code: (Die Klasse GrafikObjekte und alle Imports habe ich weg gelassen, da die hier nicht relevant sind denke ich.)
Vielen Dank schon mal im voraus für eure Zeit...
Kurz zur Problembeschreibung:
Ich erstelle einen JFrame und möchte mir der Maus dort Rechtecke generieren.
Das klappt auch soweit, aber um mehrere verschiedene Objekte mit eine Mausaktion zu erstellen möchte ich in einem zweiten Fenster mit Radio Buttons abfragen was in JFrame generiert werden soll.
Wenn ich das so programmiere wie ich es mir denke bekomme ich aber beim Klicken eine NullPointerException. Ich kann mir aber nicht erklären warum.
Die Exception kommt beim Aufruf der Merhode public boolean getRadioTrans().
Habt ihr vielleicht eine elegantere Lösung als das mit RadioButtons zu lösen ?
Für eure Hilfe wäre ich sehr dankbar.
Folgend mein Code: (Die Klasse GrafikObjekte und alle Imports habe ich weg gelassen, da die hier nicht relevant sind denke ich.)
Java:
public class start {
public static void main(String[] args) {
// Optionen Panel wird erstellt und übergeben
Optionen optionenPanel = new Optionen();
// Erstellen der Zeichenfläche Window
ZeichenArea zeichenArea = new ZeichenArea(optionenPanel);
//Optionen optionenPanel = new Optionen();
}
}
Java:
public class ZeichenArea {
JFrame frame;
GrafikObjekte grafikObj;
Optionen optionenPanel;
ZeichenArea() {
grafikObj = new GrafikObjekte();
System.out.println("Zeichenbrett Konstruktor");
frame = new JFrame("Zeichenbrett");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1000, 800);
frame.add(grafikObj);
// Hier wird das Objekt GrafikObj Area an den Mouse Handler übergeben.
AktionHandler aktion_handler = new AktionHandler(grafikObj, optionenPanel);
grafikObj.addMouseListener(aktion_handler);
grafikObj.addMouseMotionListener(aktion_handler);
frame.addKeyListener(aktion_handler);
frame.setVisible(true);
}
Java:
public class AktionHandler implements KeyListener, MouseMotionListener, MouseListener {
Optionen optionenPanel;
GrafikObjekte grafikobjekt;
public AktionHandler(GrafikObjekte array_GrafikObj,Optionen optionenPanel) {
// Aufruf des Konstruktors durch ZeichenArea
this.grafikobjekt=array_GrafikObj;
this.optionenPanel = optionenPanel;
}
@Override
public void mouseClicked(MouseEvent e) {
// Erstellen der Objekte durch auslesen der Maus XY Koordinaten
// und übergabe an die Methode aus der GrafikObjekt Klasse
System.out.println(optionenPanel.radioTrans.getHeight());
//System.out.println(optionenPanel.getRadioTrans());
if (optionenPanel.getRadioTrans())
grafikobjekt.addTransition(e.getX(), e.getY());
}
}
public ZeichenArea(Optionen optionenPanel) {
this();
this.optionenPanel = optionenPanel;
}
public JFrame getFrame() {
return frame;
}
public void setFrame(JFrame frame) {
this.frame = frame;
}
}
Java:
public class Optionen extends JFrame {
JFrame frame;
public JRadioButton radioTrans;
public Optionen() {
frame = new JFrame("Optionen");
frame.setSize(300, 300);
this.setTitle("Optionen auswählen");
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
// Hier wird ein JRadioButton erstellt
radioTrans = new JRadioButton("Transition", true);
System.out.println("radio Konstruktor " + radioTrans.isSelected());
// JRadioButton wird dem Panel hinzugefügt
frame.add(radioTrans);
frame.setVisible(true);
}
public boolean getRadioTrans() {
System.out.println("RadioButton" + radioTrans.isSelected());
return radioTrans.isSelected();
}
}
Vielen Dank schon mal im voraus für eure Zeit...