Warum wird JButton in Java nicht angezeigt?
Ich programmiere Gerade ein Java Projekt und bin auf das Problem gestoßen das der JButton im secountPanel nicht angezeigt wird.
Das ist mein Code:
package com.testProjekte;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class PrimzahlenRechnerMitGUI {
static JButton backButton = new JButton("Zurück");
public static void main(String[] args) {
loadGUI();
}
public static void loadGUI() {
JFrame mainFrame = new JFrame("Primzahl Rechner");
mainFrame.setResizable(false);
mainFrame.setSize(450,300);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new GridBagLayout());
JPanel secountPanel = new JPanel(new GridBagLayout());
JPanel thirtPanel = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(5, 5, 5, 5);
CardLayout cardLayout = new CardLayout();
JPanel cardPanel = new JPanel(cardLayout);
//main Panel Start
JButton chooseRange = new JButton("Bereich Eingeben");
chooseRange.setPreferredSize(new Dimension(chooseRange.getPreferredSize().width + 20, 30));
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.NORTHWEST;
mainPanel.add(chooseRange, gbc);
JButton chooseNumber = new JButton("Nummer eingeben");
chooseNumber.setPreferredSize(new Dimension(chooseNumber.getPreferredSize().width + 20, 30));
gbc.gridx = 1;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.EAST;
mainPanel.add(chooseNumber, gbc);
//main Panel end
//secount Panel Start
backButton.setPreferredSize(new Dimension(100, 30));
backButton.setBackground(Color.RED);
JLabel reangeText = new JLabel("Gib einen Bereich ein");
JTextField startRange = new JTextField();
startRange.setPreferredSize(new Dimension(100,30));
JTextField endRange = new JTextField();
endRange.setPreferredSize(new Dimension(100,30));
JButton checkRangeButton = new JButton("Prüfen");
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.fill = GridBagConstraints.NONE;
secountPanel.add(backButton, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
secountPanel.add(reangeText, gbc);
gbc.gridx = 0;
gbc.gridy = 3;
secountPanel.add(startRange, gbc);
gbc.gridx = 0;
gbc.gridy = 4;
secountPanel.add(endRange, gbc);
gbc.gridx = 0;
gbc.gridy = 5;
secountPanel.add(checkRangeButton, gbc);
//secount Panel end
//thirt Panel start
backButton.setPreferredSize(new Dimension(100, 30));
backButton.setBackground(Color.RED);
JLabel numberText = new JLabel("Gib eine Zahl ein");
JButton checkNumberButton = new JButton("Prüfen");
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.WEST;
thirtPanel.add(backButton, gbc);
thirtPanel.add(numberText);
thirtPanel.add(checkNumberButton);
//thirt Panel end
cardPanel.add(mainPanel, "MainPanel");
cardPanel.add(secountPanel, "SecountPanel");
cardPanel.add(thirtPanel, "ThirtPanel");
chooseRange.addActionListener(e -> cardLayout.show(cardPanel, "SecountPanel"));
chooseNumber.addActionListener(e -> cardLayout.show(cardPanel, "ThirtPanel"));
backButton.addActionListener(e -> cardLayout.show(cardPanel, "MainPanel"));
mainFrame.add(cardPanel);
mainFrame.setVisible(true);
}
}
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
Vermutlich weil du den Button danach noch dem "thirtPanel" hinzufügst. Ein Swing Objekt kann soweit ich weiß aber nur an einen Container (hier das Panel) gebunden sein weshalb der Button bei "secountPanel" entfernt wird.
Also einfach einen zweiten Button erstellen und diesen an "secountPanel" binden
Übrigens, falls du "zweites" und "drittes" meinst, wird auf Englisch so geschrieben "second" und "third" ;)
Vielen Dank
Ich werde es auf jeden Fall ausprobieren.
PS: Danke für den Hinweis. Bin nicht so gut in Englisch 🙂