Layouts mit if-Abfrage ueberpruefen

bandy

Bekanntes Mitglied
Hallo,

ich habe ein Programm geschrieben, welches einen aeusseren- und einen inneren Panel hat. Im aeusseren- befinden sich die RadioButtons und im inneren - 4 Buttons. Die RadioButtons geben die Moeglichkeit zwischen verschiedenen Layouts fuer die Buttons zu waehlen. Fuer die Buttons habe ich eine Methode geschrieben vom Typ JPanel und wenn ich dort einzeln verschiedene Layouts waehle erscheinen die Buttons auch in verschiedenen Layouts. Nun kommt das Problem. Ich will natuerlich, dass das Programm das selber macht wenn ein entsprechender RadioButton gewaehlt wird und knoepfte diese Layouts an if-Abfragen, das ganze sieht dann so aus:

Java:
if(radiobutton1.isSelected())
JPanelInnen.setLayout(new GridLayout(0,4));

if(radiobutton2.isSelected())
JPanelInnen.setLayout(new GridLayout(0,2));


Aber dies funktioniert nicht, es loesst eine Exception aus.

Code:
Exception in thread "main" java.lang.NullPointerException

Warum?:bahnhof: Wie kann man diese Abfrage durchfuehren?:bahnhof: Gibt es vielleicht andere Moeglichkeiten zu ueberpruefen, welches RadioButton gewaehlt ist, als mit der Methode
Java:
isSelected()
?
Geht es mit Listener?:bahnhof:
 
Eine Variable speichert, wo das Objekt zu finden ist. Wenn du eine Variable deklarierst verweißt sie natürlich auf nichts (= 'null'), deshalb kann natürlich auch auf keine Klassenvariable und -methoden zugegriffen werden. Wo nichts ist kann nichts gelesen werden.

Vergleiche:

Java:
import javax.swing.JRadioButton;

public class Klasse
{
	public static void main(String[] args)
	{
		JRadioButton radioButton = null;
		System.out.println(radioButton.isSelected());
	}
}
Exception fliegt, weil die Variable auf keine Instanz verweißt.
Java:
import javax.swing.JRadioButton;

public class Klasse
{
	public static void main(String[] args)
	{
		JRadioButton radioButton = new JRadioButton();
		System.out.println(radioButton.isSelected());
	}
}
False wird ausgegeben, da der RadioButton nicht selected ist. (Standart)
Java:
import javax.swing.JRadioButton;

public class Klasse
{
	public static void main(String[] args)
	{
		JRadioButton radioButton = new JRadioButton(((String)null), true);
		System.out.println(radioButton.isSelected());
	}
}
True wird ausgegeben, da der RadioButton von der Instanzierung an ausgewählt ist.
 
Wo reingeschrieben? Wie meinst du denn das?:bahnhof:
Wenn NullPointerException auftaucht greifst du auf ein Objekt zu, welches eigentlich null ist.
Da in deinem kleinem Code-Ausschnitt nur 3 Variablen auftauchen: radiobutton1, radiobutton2, JPanelInnen müsste mind. 1 davon null sein.
Ansonsten müsste ja bei der Exception auch Zeilenangaben sein.
 
Eine Variable speichert, wo das Objekt zu finden ist. Wenn du eine Variable deklarierst verweißt sie natürlich auf nichts (= 'null'), deshalb kann natürlich auch auf keine Klassenvariable und -methoden zugegriffen werden. Wo nichts ist kann nichts gelesen werden.

Um mal ... pedantisch ... oder präzise...? ... zu werden: Doch, das geht. Man kann dafür sorgen, dass die zwei Zeilen
Java:
        MagicClass object = null;
        System.out.println(object.value);
genau SO compiliert und ausgeführt werden können, ohne dass es zu einer Exception kommt. Vielleicht mal als Quizfrage posten :reflect:
 
Um mal ... pedantisch ... oder präzise...? ... zu werden: Doch, das geht. Man kann dafür sorgen, dass die zwei Zeilen
Java:
        MagicClass object = null;
        System.out.println(object.value);
genau SO compiliert und ausgeführt werden können, ohne dass es zu einer Exception kommt. Vielleicht mal als Quizfrage posten :reflect:
Java:
public class MagicClass {
  public static String value = "Ahoi!";
}
? 😀
 
OK.
Ich denke ich weiss wo der Fehler liegt.

Aber noch eine Frage ueber die RadioButtons, kann man mit denen direkt Werte ausgeben, ich meine wenn man auf RadioButton direkt klickt, dass es gleich den Wert true liefert wie bei der JComboBox, oder muss man erst immer die RadioButtons an ein Button binden, welcher dann ueberprueft welcher RadioButton geklickt wurde?
 
Was meinst du?
Java:
radioButton.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        System.out.println("selected? "+radioButton.isSelected());
    }
});
 

Neue Themen


Zurück
Oben