Anfängerproblem Syntax if Schleife

superping

Aktives Mitglied
Nabend zusammen!

Hab was total peinliches am Start. Ich weiss nicht wie ich per if Abfrage rausbekommen kann, ob ein Panel connected ist. Ich bekomms einfach nicht hin. 🙁

Habe in einer Klasse:

Java:
public void setJPanelConnection(boolean x)
{
		tNPanel.setVisible(x);
}

...und greife aus einer anderen Klasse mit

Java:
tnDialog.add(tnPanel.getJPanelConnection());
tnPanel.setJPanelConnection(true);

drauf zu. Funktioniert auch.

Jetzt bräuchte ich eine if Abfrage die in etwa so aussieht:

Java:
if (tnPanel.setJPanelConnection() == true) {//mach irgendwas}

Leider bekomm ich´s einfach nicht hin, dass "richtig" zu coden. Compiler meckert bei o.g. Besipiel.

Bin für jede Hilfe dankbar!
 
Für eine Abfrage bräuchtest du ja eine get-Methode oder für ein boolean is-Methode. Wenn ich das richtig verstanden habe, müsste diese so aussehen:
Java:
public void isJPanelConnection()
{
        return tNPanel.isVisible();
}
und die if-Abfrage sieht dann so aus:
Java:
if (tnPanel.isJPanelConnection() == true) {
   ...
}
 
*Verzweifel* Funktioniert leider auch nicht.

Java:
public void isJPanelConnection()
{
        return tNPanel.isVisible();
}

Compiler sagt: "cannot return a value from method whose result type is void"
 
ups, sorry, es muss natürlich boolean statt void heissen.
Java:
public boolean isJPanelConnection()
{
        return tNPanel.isVisible();
}
 
Danke erstmal für Deine Hilfe!

Mit boolean klappts. Allerdings wirft mir der Compiler eine Null-Pointer-Exception wenn ich das in eine if Schleife packe.

Java:
if (tnPanel.isJPanelConnection() != true)
               {
               tnDialog.add(tnPanel.getJPanelConnection());
               tnPanel.setJPanelConnection(true);
               tnPanel.repaint();
               tnPanel.revalidate();
               tnPanel.setVisible(true);
               }

Noch irgendeine Idee?
 
>Noch irgendeine Idee?

Ja. tnPanel oder tnDialog ist nich initialisiert, dh: null. Wenn du nun auf null eine Methode ausführen willst --> Peng...NPE
(Und es motzt nicht der Compiler, sondern das geschieht zur Laufzeit ;-)

EDIT:
ach ja und:
if-schleife.de
 
Zuletzt bearbeitet:
Also in "Klasse 1" erzeuge ich es.

Java:
"Klasse 1"

public void setJPanelConnection(boolean x)
{
	tNPanel.setVisible(x);
}

public boolean isJPanelConnection()
{
        return tNPanel.isVisible();
}

public static JPanel tNPanel = null;

public JPanel getJPanelConnection() {
        if(tNPanel == null) {...

und in "Klasse 2" initialisier ich (glaub ich) das.

Java:
"Klasse 2"

final Klasse1 tnPanel;

public Klasse2 {
...
tnPanel = new Klasse1();
...
if (tnPanel.isJPanelConnection() != true)
               {
               tnDialog.add(tnPanel.getJPanelConnection());
               tnPanel.setJPanelConnection(true);
               tnPanel.repaint();
               tnPanel.revalidate();
               tnPanel.setVisible(true);
               }
...
}
 
Na ja. So wie ich das sehe aus beiden:

TourNeu ist Klasse1
und
Main die Klasse2

Hier die Exception:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at connect.TourNeu.isJPanelConnection(TourNeu.java:160)
at connect.Main$15.actionPerformed(Main.java:2138)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266)
at java.awt.Component.processMouseEvent(Component.java:6134)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 
hier fliegt sie:
connect.TourNeu.isJPanelConnection(TourNeu.java:160)

ausgelöst durch die ActionPerformed:
connect.Main$15.actionPerformed(Main.java:2138)

-->
tnPanel ist in isJPanelConnection() null.
Muss also noch initialisiert werden.
zb:

public static JPanel tNPanel = new JPanel();
anstatt:
public static JPanel tNPanel = null;
 
Danke! Klappt jetzt schonmal... Jetzt hat sich da ein neues (wahrscheinlich) repaint Problemchen eingestellt.

Das aber in einem anderen Thread.

Danke euch!!!
 

Neue Themen


Zurück
Oben