Swing JPanel zeigt Buttons nicht an

Alex2013

Bekanntes Mitglied
Hallo Leute,

ich wollte mal einen kleinen Test wagen und habe folgendes kleines Übungsprogramm geschrieben. Hier möchte ich einige JPanels einfügen, welche bei betätigen verschiedener Buttons jeweils angezeigt werden (setVisible(true/false)).
Soweit so gut, das Programm kompiliert ohne sichtbare Fehler. Jedoch werden die Buttons auf den verschiedenen Panels nicht angezeigt. Ich habe schon einige Varianten versucht. (Initialisierung in der Hauptklasse, im Konstruktor etc.)Bisher hat nichts wirklich geholfen.
Ich habe auch einige Hilfsausgaben verwendet, jedoch werden die korrekt angesteuert. Das Programm läuft nur nicht in die jeweilige actionPerformed Methode.
Kann mir jemand sagen, wo genau mein Fehler liegt?
Schlussendlich sollen mir checkboxes angezeigt werden welche ich auswählen kann und dass mir diese Auswahl nach einem klick auf "ok" wieder auf dem "hauptpanel" angezeigt wird.

Hier mal der Code:

Java:
import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class McDonaldsWenig extends JFrame {
    public JPanel menuepanel;public JPanel burgerpanel;public JPanel gemuesepanel;public JPanel obstpanel;
    JButton ok = new JButton("OK"), burgerbutton = new JButton("Burger"),
            gemuesebutton = new JButton("Gemuese"), obstbutton = new JButton(
                    "Obst");
    JCheckBox burger = new JCheckBox("Burger"),
            pommes = new JCheckBox("Pommes"), bigmac = new JCheckBox("BigMac"),
            salat = new JCheckBox("Salat"), gurken = new JCheckBox("Gurke"),
            tomaten = new JCheckBox("Tomate"),
            banane = new JCheckBox("Banane"), apfel = new JCheckBox("Apfel"),
            pfirsich = new JCheckBox("Pfirsich");
    JLabel anzeige = new JLabel();
    Container c;

    public McDonaldsWenig() {
        setSize(400, 400);
        setLocationRelativeTo(null);
        menuepanel=new JPanel();
        burgerpanel=new JPanel();
        gemuesepanel=new JPanel();
        obstpanel=new JPanel();
      
        add(menuepanel);
        menuepanel.setLayout(new GridLayout(4, 1));
        menuepanel.add(burgerbutton);
        menuepanel.add(gemuesebutton);
        menuepanel.add(obstbutton);
        menuepanel.add(anzeige);
      
        System.out.println("x1");
        burgerbutton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                burgerpanel.setVisible(true);
                gemuesepanel.setVisible(false);
                obstpanel.setVisible(false);
                menuepanel.setVisible(false);
            }
        });
      
        gemuesebutton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                burgerpanel.setVisible(false);
                gemuesepanel.setVisible(true);
                obstpanel.setVisible(false);
                menuepanel.setVisible(false);
            }
        });
        obstbutton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                burgerpanel.setVisible(false);
                gemuesepanel.setVisible(false);
                obstpanel.setVisible(true);
                menuepanel.setVisible(false);
            }
        });
        System.out.println("x2");
      
        burgerpanel.setLayout(new GridLayout(2, 1));
        burgerpanel.add(burger);
        burgerpanel.add(ok);
      
        System.out.println("x5");
        ok.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("x3");
                String a="";
                if(burger.isSelected())
                {
                    a=a+burger.getText();
                }
                burgerpanel.setVisible(false);
                menuepanel.setVisible(true);
                anzeige.setText(""+a);
            }
        });
      
        gemuesepanel.add(salat);
        gemuesepanel.add(ok);
        System.out.println("x4");
        ok.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("x1_2");
                String a="";
                if(salat.isSelected())
                {
                    a=a+salat.getText();
                }
                gemuesepanel.setVisible(false);
                menuepanel.setVisible(true);
                anzeige.setText(""+a);
            }
        });
        System.out.println("X2_1");
        obstpanel.add(apfel);
        obstpanel.add(ok);
        ok.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("x_3");
                String a="";
                if(apfel.isSelected())
                {
                    a=a+apfel.getText();
                }
                obstpanel.setVisible(false);
                menuepanel.setVisible(true);
                anzeige.setText(""+a);
            }
        });
        System.out.println("x6");
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new McDonaldsWenig();
    }
}

Die Hilfsausgabe sieht folgend aus:
x1
x2
x5
x4
x2_1
x6

Weiß hier zufällig jemand weiter? Dafür wäre ich dankbar :)
Lg
 
Zuletzt bearbeitet von einem Moderator:

ConzT

Mitglied
Hi, ich arbeite selber erst seit paar Tagen mit Grafischen Komponenten und kenne mich selber nicht wirklich gut aus ,-)

Ich habe mir den Code angesehen und mir ist aufgefallen, dass du die Panels: burgerpanel, gemuesepane, obstpanel nirgendwo hinzufügst. Wenn ich eines der Panel zum Frame hinzufüge wird mir dort dann zumindest eine CheckBox angezeigt. So soll es zwar bestimmt nicht sein, aber vielleicht hilft dir das ja weiter
 

Alex2013

Bekanntes Mitglied
Also ich hatte sie schon hinzugefügt. Ich habe das jetzt noch mal etwas geändert. Aber an dem Problem hat sich noch immer nichts geändert... :-(
Ich habe diesmal zum Teil nur eine Komponente die hinzugefügt werden soll um zunächst nur die Funktionalität zu bekommen.
Ich kann mir nicht erklären, wieso die Buttons nicht angezeigt werden. Das Programm läuft fehlerfrei durch und geht bei entsprechendem Klick auch in die actionPerformed Methode. Angezeigt wird aber nichts...

Hier der Code:

Java:
public class McDonaldsNochMalNeu extends JFrame{
    JPanel vierPanel=new JPanel(),einsPanel=new JPanel(),zweiPanel=new JPanel(),dreiPanel=new JPanel();
    JButton okEins=new JButton("ok"),okZwei=new JButton("ok"),okDrei=new JButton("ok"),zuPaneleins=new JButton("panel 1"),zuPanelzwei=new JButton("panel 2"),zuPaneldrei=new JButton("panel 3");
    Container c;
    public McDonaldsNochMalNeu() {  
        c=getContentPane();
        JFrame frame=new JFrame();
        frame.setSize(300, 200);
        //das Content Pane des frames wird geladen und das Layout gesetzt
        frame.add(c);
        c.setLayout(new FlowLayout());
      
        //Die Panels werden hinzugefügt
        c.add(einsPanel);
        c.add(zweiPanel);
        c.add(dreiPanel);
        System.out.println("x1");
      
        //Die drei Panels werden unsichtbar gesetzt
        dreiPanel.setVisible(false);
        zweiPanel.setVisible(false);
        einsPanel.setVisible(false);
        System.out.println("x2");
      
        //die Buttons welche die Panels aufrufen werden zu den panels gefügt
        c.add(zuPaneleins);
        c.add(zuPanelzwei);
        c.add(zuPaneldrei);
        System.out.println("x3");
      
        //das hauptpanel wird sichbar gemacht
        einsPanel.setLayout(new FlowLayout());
        einsPanel.add(okEins);
        System.out.println("x4");
        zuPaneleins.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("x5");
                c.setVisible(false);
                zweiPanel.setVisible(false);
                dreiPanel.setVisible(false);
                einsPanel.setVisible(true);
            }
        });

        System.out.println("x6");
        zweiPanel.setLayout(new FlowLayout());
        zweiPanel.add(okZwei);
        zuPanelzwei.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("x7");
                c.setVisible(false);
                zweiPanel.setVisible(true);
                dreiPanel.setVisible(false);
                einsPanel.setVisible(false);
            }
        });
        System.out.println("x8");
        dreiPanel.setLayout(new FlowLayout());
        dreiPanel.add(okDrei);
        zuPaneldrei.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("x9_2");
                c.setVisible(false);
                zweiPanel.setVisible(false);
                dreiPanel.setVisible(true);
                einsPanel.setVisible(false);
            }
        });
        System.out.println("x9");
        //Was passiert bei drücken des OK buttons
        einsPanel.setLayout(new FlowLayout());
        einsPanel.add(okEins);
        okEins.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                einsPanel.setVisible(false);
                c.setVisible(true);
            }
        });
        zweiPanel.setLayout(new FlowLayout());
        zweiPanel.add(okZwei);
        okZwei.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                zweiPanel.setVisible(false);
                c.setVisible(true);
            }
        });
        dreiPanel.setLayout(new FlowLayout());
        dreiPanel.add(okDrei);
        okDrei.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dreiPanel.setVisible(false);
                c.setVisible(true);
            }
        });
        System.out.println("x10");
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new McDonaldsNochMalNeu();
    }
}

Hat vlt. noch jemand einen Tipp oder sogar die Lösung? :)
Lg
 
Zuletzt bearbeitet von einem Moderator:
K

kneitzel

Gast
Also die Variablennamen solltest Du einmal überarbeiten. Eine Variable c ist nun wirklich nichtssagend.

Und wenn Du alles in c steckst und c dann unsichtbar machst, dann ist C mit ganzem Inhalt nicht mehr sichtbar. Nimm die c.setVisible(false); raus und Du kannst da die Panels umschalten. Musst halt noch am Layout arbeiten... Und das c.setVisible(true); brauchst du auch nicht, wobei die auch nicht schaden ...
 

Tiding

Aktives Mitglied
Du scheinst da nen kleinen Denkfehler zu haben ^^

Dein ContentPane mit dem Namen "c" beinhaltet all deine Komponenten. Wenn du dieses nun also unischtbar machst, werden auch alle in c enthaltenen Komponenten unsichtbar. Also alle deine JPanel... Anmerkung: Auch jene Komponenten, die sich in den Panel befinden, gehören natürlich zu denen oben genannten Komponenten, die sich in c befinden...
Also wie gesagt, machst du alle Komponenten, die du da erstellt hast und c zugefügt hast unsichtbar. Was sicher nicht dein Ziel war :eek:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
J Swing JPanel mit Hintergrund zeigt componente nicht AWT, Swing, JavaFX & SWT 6
F JScrollPane mit JPanel drinne zeigt keine Scroll-Leisten AWT, Swing, JavaFX & SWT 7
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
kilopack15 JPanel im laufenden Zustand einfärben AWT, Swing, JavaFX & SWT 2
kilopack15 JPanel Farbverwaltung AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JPanel zeichnet im Konstrukter erzeugten Hintergrund nicht AWT, Swing, JavaFX & SWT 10
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Meeresgott Swing Umgang mit JPanel AWT, Swing, JavaFX & SWT 4
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
J Swing Zeichenfläche im JPanel des Haupfenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
R JPanel überzeichnet alles? AWT, Swing, JavaFX & SWT 1
D Von JPanel auf anderes JPanel zugreifen AWT, Swing, JavaFX & SWT 9
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
I JPanel - Verwaltung/ Anordnung AWT, Swing, JavaFX & SWT 4
T JComponents zur Laufzeit auf JPanel darstellen AWT, Swing, JavaFX & SWT 10
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
T JTextField Array im JPanel wird nicht komplett angezeigt AWT, Swing, JavaFX & SWT 7
K Swing JPanel ueber komplette Form legen AWT, Swing, JavaFX & SWT 1
W Swing Größenänderung vom JPanel im JScrollPane und anschließendes positionieren AWT, Swing, JavaFX & SWT 2
R Komponenten von JPanel bleiben unsichtbar AWT, Swing, JavaFX & SWT 2
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
llabusch Linien in JPanel zeichnen AWT, Swing, JavaFX & SWT 6
I (JPanel) paintComponent mit Zeitverschiebung (Sleep/Wait) AWT, Swing, JavaFX & SWT 1
H Netbeans Designer: Probleme mit JPanel und JFrame AWT, Swing, JavaFX & SWT 2
S jpanel anchor bottom AWT, Swing, JavaFX & SWT 1
thobren Swing Im JPanel wird nur TextArea gelöscht AWT, Swing, JavaFX & SWT 13
A JPanel größe verändern AWT, Swing, JavaFX & SWT 4
G JPanel komponente Löschen AWT, Swing, JavaFX & SWT 7
F JPanel "verschmelzen" GridLayout AWT, Swing, JavaFX & SWT 10
B Dropdown "Einstellungen" auf JPanel, transparent AWT, Swing, JavaFX & SWT 1
D GlassPane für JPanel AWT, Swing, JavaFX & SWT 2
F JPanel "zeichnet" keinen Text AWT, Swing, JavaFX & SWT 14
T Swing Index für Komponente in JPanel? AWT, Swing, JavaFX & SWT 6
Z Probleme mit JPanel's AWT, Swing, JavaFX & SWT 6
T Probleme mit Anzeige von Elementen im JPanel AWT, Swing, JavaFX & SWT 1
R JScrollPane überdeckt JPanel? AWT, Swing, JavaFX & SWT 7
O 2D-Grafik Zeichenfläche auf JPanel AWT, Swing, JavaFX & SWT 4
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
A JPanel Bild laden (Porblem mit Dateipfad) AWT, Swing, JavaFX & SWT 2
K Swing paintComponent, JPanel auslagern, ChangeEvents AWT, Swing, JavaFX & SWT 7
L GUI - Jpanel - Splitpane will nicht aktualisieren AWT, Swing, JavaFX & SWT 4
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
dat_vin Zeichenbrett (JPanel) AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben