Hallo,
Ich habe ein Programm geschrieben, in dem ein JFrame (mit BorderLayout) geöffnet wird. Dieses JFrame besitzt 2 Panels, eines davon habe ich mit Hilfe des BorderLayouts am unteren Rand platziert (BorderLayout.SOUTH), das andere im Center.
Dem oberen Panel habe ich ein CardLayout zugewiesen, und wollte dieses dann über das untere Panel steuern. In dem unteren Panel habe ich 4 Buttons implementiert.
1. Wenn ich dem Panel mit dem CardLayout nun weitere Panel hinzufüge, tut sich nichts. Geht das etwas nicht?
2. Wenn ich dem Panel mit dem CardLayout Buttons hinzufüge, ignoriert es die Größe des Knopfes und durchschalten lässt es sich auch nicht. Was ist bei meinem Code falsch?
Beim ausführen des Programms wird nur ein großer Knopf angezeigt auf dem "eerster Knopf" steht und unten sind die 4 Knöpfe, welche anscheinend ohne Funktion sind.
Mein Code:
PS: Das ist nur eine Testklasse, deshalb sind kleine "unwichtige" Fehler wie z.B. der kleingeschriebene Klassenname enthalten.
Ich habe ein Programm geschrieben, in dem ein JFrame (mit BorderLayout) geöffnet wird. Dieses JFrame besitzt 2 Panels, eines davon habe ich mit Hilfe des BorderLayouts am unteren Rand platziert (BorderLayout.SOUTH), das andere im Center.
Dem oberen Panel habe ich ein CardLayout zugewiesen, und wollte dieses dann über das untere Panel steuern. In dem unteren Panel habe ich 4 Buttons implementiert.
1. Wenn ich dem Panel mit dem CardLayout nun weitere Panel hinzufüge, tut sich nichts. Geht das etwas nicht?
2. Wenn ich dem Panel mit dem CardLayout Buttons hinzufüge, ignoriert es die Größe des Knopfes und durchschalten lässt es sich auch nicht. Was ist bei meinem Code falsch?
Beim ausführen des Programms wird nur ein großer Knopf angezeigt auf dem "eerster Knopf" steht und unten sind die 4 Knöpfe, welche anscheinend ohne Funktion sind.
Mein Code:
Java:
package test;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
public class testmain extends JFrame {
CardLayout cardLayout;
JButton btnPrev;
JButton btnNext;
JButton btnFirst;
JButton btnLast;
JButton btn5;
JPanel panelMain;
public static void main(String[] args) {
JFrame jf = new testmain();
}
public testmain() {
// JFrame Einstellungen
setVisible(true);
setSize(800, 500);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new BorderLayout());
// JPanels erzeugen, zum Testen vom CardLayout
JPanel panelRot = new JPanel();
JPanel panelBlau = new JPanel();
JPanel panelGelb = new JPanel();
JPanel panelSchwarz = new JPanel();
// Hintergrundfarbe für die Panels
panelRot.setBackground(Color.RED);
panelBlau.setBackground(Color.BLUE);
panelGelb.setBackground(Color.YELLOW);
panelSchwarz.setBackground(Color.BLACK);
// die 2 HauptJPanels
JPanel panelBtn = new JPanel();
JPanel panelMain = new JPanel();
add(panelBtn, BorderLayout.SOUTH);
add(panelMain, BorderLayout.CENTER);
panelBtn.setLayout(new FlowLayout());
// CardLayout für das große Panel erstellen
CardLayout cardLayout = new CardLayout();
panelMain.setLayout(cardLayout);
// Hinzufügen der Buttons zum unteren Panel
JButton btnPrev = new JButton("<");
JButton btnNext = new JButton(">");
JButton btnFirst = new JButton("Erstes");
JButton btnLast = new JButton("Letztes");
panelBtn.add(btnPrev);
panelBtn.add(btnNext);
panelBtn.add(btnFirst);
panelBtn.add(btnLast);
// ActionListener für die Buttons
BtnListener aLi = new BtnListener();
btnPrev.addActionListener(aLi);
btnNext.addActionListener(aLi);
btnFirst.addActionListener(aLi);
btnLast.addActionListener(aLi);
// Hintergrundfarbe zur besseren Sichtbarkeit
panelBtn.setBackground(Color.RED);
panelMain.setBackground(Color.YELLOW);
// Elemente für das CardLayout
// panelMain.add(panelRot, "Rot");
// panelMain.add(panelBlau, "Blau");
JButton knopf1 = new JButton("eerster Knopf");
knopf1.setSize(50, 15);
panelMain.add(knopf1, "button1");
panelMain.add(new JButton("zweiter Knopf"), "button2");
panelMain.add(new JButton("dritter Knopf"), "button3");
panelMain.add(new JButton("vierter Knopf"), "button4");
setSize(500, 300);
setLocationRelativeTo(null);
setVisible(true);
}
// ActionListener für die Buttons im unteren Panel
private class BtnListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// nächstes Element im CardLayout
if (e.getSource().equals(btnNext)) {
cardLayout.next(panelMain);
// vorheriges Element im CardLayout
} else if (e.getSource().equals(btnPrev)) {
cardLayout.previous(panelMain);
// erstes Element
} else if (e.getSource().equals(btnFirst)) {
cardLayout.first(panelMain);
// letztes Element
} else if (e.getSource().equals(btnLast)) {
cardLayout.last(panelMain);
}
}
}
}
PS: Das ist nur eine Testklasse, deshalb sind kleine "unwichtige" Fehler wie z.B. der kleingeschriebene Klassenname enthalten.