Fragen zu JPanel und JButton

hahawall

Mitglied
Hallo,

ich habe vor kurzem mit Java Programmierung angefangen und habe ein Programm geschrieben das folgendes tun soll (Quelltext ist unten):

Wenn ich das Programm öffne erscheint folgendes Fenster:


Drücke ich auf 1 erscheint unten auf einem JLabel die 1 und links öffnet sich ein JPanel mit weiteren JButtons.


Drücke ich auf die 2 erscheint unten im Label eine 2 und auf der linken Seite ändern sich die Buttons.


Drücke ich nun wieder auf die 1 sollen wieder die Button Neu 1A, Neu 1B etc erscheinen und die anderen verschwinden und so weiter.

Dies funktioniert auch mit folgendem Code:

Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class SimpleGuiB{
    int width = 400;
    int height = 400;
    JButton button1, button2;

    JButton NeuerButton1A = new JButton("Neu 1A.");
    JButton NeuerButton1B = new JButton("Neu 1B.");
    JButton NeuerButton1C = new JButton("Neu 1C.");
    JButton NeuerButton1D = new JButton("Neu 1D.");
    JButton NeuerButton1E = new JButton("Neu 1E.");

    JButton NeuerButton2A = new JButton("Neu 2A.");
    JButton NeuerButton2B = new JButton("Neu 2B.");
    JButton NeuerButton2C = new JButton("Neu 2C.");
    JButton NeuerButton2D = new JButton("Neu 2D.");
    JButton NeuerButton2E = new JButton("Neu 2E.");

    JLabel label;
    JPanel panelUnten;
    JPanel panelLinks;

    public static void main(String[] args) {
        SimpleGuiB gui = new SimpleGuiB();
        gui.los();
    }

    public void los() {
        JFrame frame = new JFrame();
        button1 = new JButton("1");
        button2 = new JButton("2");
        panelUnten = new JPanel();
        panelLinks = new JPanel();
        label = new JLabel("");

        panelUnten.setBackground(Color.red);
        panelLinks.setBackground(Color.red);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setSize(width, height);

        frame.getContentPane().add(BorderLayout.SOUTH, panelUnten);
        frame.getContentPane().add(BorderLayout.WEST, panelLinks);

        button1.addActionListener(new Button1Listener());
        button2.addActionListener(new Button2Listener());

        panelLinks.setLayout(new BoxLayout(panelLinks, BoxLayout.Y_AXIS));

        panelUnten.add(button1);
        panelUnten.add(label);
        panelUnten.add(button2);
        
        frame.setVisible(true);

    }

    class Button1Listener implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            label.setText("1");
            panelLinks.removeAll();
            panelLinks.add(NeuerButton1A);
            panelLinks.add(NeuerButton1B);
            panelLinks.add(NeuerButton1C);
            panelLinks.add(NeuerButton1D);
            panelLinks.add(NeuerButton1E);
        }
    }

    class Button2Listener implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            label.setText("2");
            panelLinks.removeAll();
            panelLinks.add(NeuerButton2A);
            panelLinks.add(NeuerButton2B);
            panelLinks.add(NeuerButton2C);
            //panelLinks.add(NeuerButton2D);
            //panelLinks.add(NeuerButton2E);
        }
    }
}

Nun zu meinem Problem: Wie man sieht sind im Code ganz unten bei Button2Listener die letzten beiden Zeilen auskommentiert. Entferne ich die Kommentarstriche vor
Java:
//panelLinks.add(NeuerButton2D);
, will also wenn unten "2" gedrückt wird einen weiteren Button hinzufügen, dann verschwindet (wenn ich vorher "1" gedrückt habe) der 1E Button nicht, siehe Bild:

Drücke ich nun wieder "1" passiert garnichts. Ich verstehe nicht warum sich das Programm nun gänzlich anders verhält obwohl ich lediglich einen weiteren Button hinzugefügt habe.

Ein weiteres Problem: Entferne ich überall im Code das JLabel welches unten die "1" und "2" anzeigt passiert nichts mehr, d.h. wenn ich dann auf "1" oder "2" drücke öffnet sich das linke JPanel überhaupt nicht und es erscheinen dann natürlich auch keine Buttons etc.

Kann mir jemand helfen?
 
C

Camino

Gast
Keine Ahnung, ob es daran liegen könnte, dass der Frame bzw. die Panel neu gezeichnet werden müssten. Aber eine andere Möglichkeit wäre, wenn du mit einem CardLayout arbeiten würdest und so zwischen den Panel hin- und herschaltest.
 
S

SlaterB

Gast
das Verhalten ist beim dem Programmaufbau unspezifiziert, da kann gerne alles mögliche passieren oder nicht passieren

du musst nach den Änderungen jeweils validate() oder revalidate() + evtl. repaint() aufrufen, am JPanel oder am ganzen JFrame, je nachdem wieviel strukturell betroffen ist,
JLabel-Text nicht unbedingt, obwohl bisschen fraglich wenn soviel, dass anderen Komponenten verschoben werden

noch besser: Komponenten nur zu Beginn erzeugen, zwischen verschiedenen fertigen Seiten umschalten:
How to Use CardLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)
 

wkt

Mitglied
hahawall, vielen Dank für das schöne Beispiel.

Habe nur repaint() eingefügt nach den add() in den Listenern und
alles läuft.

Habe wieder einiges dazugelernt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
thor_norsk Allgemeine Fragen AWT, Swing, JavaFX & SWT 6
thor_norsk Allgemeine Fragen AWT, Swing, JavaFX & SWT 4
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
K JavaFX Allgemeine Fragen zu dem Aufbau eines Programms hinsichtlich der Klassen AWT, Swing, JavaFX & SWT 1
D Fragen zur GUI AWT, Swing, JavaFX & SWT 4
M NetBeans JFrame Grundlangen fragen AWT, Swing, JavaFX & SWT 6
T JavaFX Allgemeine Fragen zu JavaFX (uA zu Properties) AWT, Swing, JavaFX & SWT 6
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
K Fragen zu JavaFx Canvas AWT, Swing, JavaFX & SWT 0
N Swing Fragen zu non-modal JDialog AWT, Swing, JavaFX & SWT 1
Q Fragen zur JMenuBar & Co. AWT, Swing, JavaFX & SWT 3
F DefaultTreeCellEditor - Fragen zur Groesse und zum Icon beim Editieren AWT, Swing, JavaFX & SWT 4
Kenan89 JMenu Fragen AWT, Swing, JavaFX & SWT 5
Luk10 (LWJGL) Fragen zu VBOs AWT, Swing, JavaFX & SWT 21
M Swing JTextPane + Scrollbar = Fragen AWT, Swing, JavaFX & SWT 15
S Fragen zu JList AWT, Swing, JavaFX & SWT 3
J Das erste Projekt und ein Haufen von Fragen. Der SudokuReader. AWT, Swing, JavaFX & SWT 4
Luk10 Fragen zum Laden von Fonts AWT, Swing, JavaFX & SWT 4
Luk10 Fragen zum Koordinaten System AWT, Swing, JavaFX & SWT 3
M JTable Grundlegende Fragen AWT, Swing, JavaFX & SWT 4
B Prozentrechner GUI Fragen AWT, Swing, JavaFX & SWT 4
Q Swing Zeichenprogramm, grundlegende Fragen AWT, Swing, JavaFX & SWT 8
U Swing Fragen bezüglich Multithreaded GUIs (Grundlagen): AWT, Swing, JavaFX & SWT 3
R LayoutManager GridBagLayout Fragen AWT, Swing, JavaFX & SWT 10
A diverse Layout-Fragen AWT, Swing, JavaFX & SWT 4
M LayoutManager Einige Fragen zum GridBagLayout AWT, Swing, JavaFX & SWT 13
H Swing Zwei Fragen AWT, Swing, JavaFX & SWT 5
S 2D-Grafik Diverse Fragen zu Imagemanipulation in Java AWT, Swing, JavaFX & SWT 11
C Swing Grundsätzliche Fragen zu MVC AWT, Swing, JavaFX & SWT 8
F 3 Fragen zu Applets AWT, Swing, JavaFX & SWT 4
L Klick auf JTable -> EditorPane manipulieren, Fragen zu TableModel AWT, Swing, JavaFX & SWT 9
S Fragen zu GridBagLayout AWT, Swing, JavaFX & SWT 6
B Zeichnen in Swing - Jede Menge Fragen! AWT, Swing, JavaFX & SWT 2
D Fragen zu Swing, paintComponent() und repaint AWT, Swing, JavaFX & SWT 6
D GridBagLayout und JEditorPane (mehrere fragen) AWT, Swing, JavaFX & SWT 2
A Swing einfache fragen zu frame AWT, Swing, JavaFX & SWT 10
P Mehrere Fragen AWT, Swing, JavaFX & SWT 4
A Fragen zu Microber AWT, Swing, JavaFX & SWT 4
C Mehrer Fragen zu großem kompletten Swing Beispiel AWT, Swing, JavaFX & SWT 5
T Fragen zu JList und DnD AWT, Swing, JavaFX & SWT 13
I Einige Fragen zu JList AWT, Swing, JavaFX & SWT 6
I Drei Fragen/Probleme mit einer JTable AWT, Swing, JavaFX & SWT 9
G Fragen zum FileChooser AWT, Swing, JavaFX & SWT 5
M 2 Kleine Fragen zum JOptionFrame AWT, Swing, JavaFX & SWT 5
G performance fragen zu AWT, Swing AWT, Swing, JavaFX & SWT 14
J Fragen zu JTable und JScrollpane AWT, Swing, JavaFX & SWT 2
R Frage zu Listfeld oder jTable, auch andere Fragen AWT, Swing, JavaFX & SWT 5
C Fragen zur Darstellung einer JTable mittels Renderer AWT, Swing, JavaFX & SWT 2
ModellbahnerTT Fragen zu AWT AWT, Swing, JavaFX & SWT 3
S Fragen Databinding? AWT, Swing, JavaFX & SWT 3
J Fragen zu AWT Komponenten AWT, Swing, JavaFX & SWT 5
U 2 Fragen zu BufferedImages AWT, Swing, JavaFX & SWT 19
J Fragen zur Vererbung und Update AWT, Swing, JavaFX & SWT 12
J Fragen zum SyntaxHighlighting (DefaultStyledDocument) AWT, Swing, JavaFX & SWT 2
I Ein paar SWT Fragen AWT, Swing, JavaFX & SWT 10
P Zwei Fragen zu Bildern in Applets AWT, Swing, JavaFX & SWT 2
isowiz Einige Fragen zur ersten eigenen Sing-Applikation AWT, Swing, JavaFX & SWT 4
G 2 Fragen JDesktopPane AWT, Swing, JavaFX & SWT 4
S Fragen zu einem Beispiel(Swings und AWT) AWT, Swing, JavaFX & SWT 33
G Fragen zum Ocean Look and Feel AWT, Swing, JavaFX & SWT 3
G Neue Komponente erstellen - Fragen/Probleme mit MouseEvents AWT, Swing, JavaFX & SWT 2
Y 2 Fragen- JList Inhalt ändern und Fenster invisible setzen AWT, Swing, JavaFX & SWT 5
C Gemischte Fragen AWT, Swing, JavaFX & SWT 10
G Fragen zu JList AWT, Swing, JavaFX & SWT 12
K 2 fragen:JCheckBoxMenuItem und ComboBox AWT, Swing, JavaFX & SWT 2
T Mehrere Fragen zu JToolBar AWT, Swing, JavaFX & SWT 2
N 2 Fragen (zu binärem Suchen und Scrollbar) AWT, Swing, JavaFX & SWT 6
B Einige Fragen zum GUI AWT, Swing, JavaFX & SWT 3
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
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
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

Ähnliche Java Themen

Neue Themen


Oben