Problem bei Datei zur Verwaltung von Tabs
pc-world
- java
Mein Code dient dazu, mir ein Fenster mit Tabs zu erstellen und die Tabs besser verwalten zu können.
Ich habe eine Methode setCenterPanel(), die bei einem Tab das Panel setzen soll. Aber es wird nur ein leeres Panel angezeigt!
In der main()-Methode habe ich die Klasse (mit ihrer Unterklasse) getestet.
Mein Code sieht so aus (aufs nötigste beschränkt):
package testPackage;
import java.awt.*;
import javax.swing.*;
import java.util.ArrayList;
public class GUI_fenster {
private ArrayList<GUI_tabs> tabListe = new ArrayList<GUI_tabs>();
private int fensterHoehe = 700;
private int fensterBreite = 800;
private JFrame fenster;
private GUI_JTabbedPaneWithCloseIcons tabs = new GUI_JTabbedPaneWithCloseIcons(); // ist eine
//JTabbedPane mit Schließen-Buttons
public GUI_fenster() {
fenster = new JFrame();
fenster.setSize(fensterBreiteStandard, fensterHoeheStandard);
fenster.setLocationRelativeTo(null);
fenster.add(tabs);
}
public void addTab(int arrayNr, String titel) {
tabListe.add(arrayNr, new GUI_tabs(titel));
}
public void addTab(int arrayNr, String titel, JPanel panel) {
tabListe.add(arrayNr, new GUI_tabs(titel, panel));
}
public GUI_tabs getTab(int arrayNr) {
return tabListe.get(arrayNr);
}
public GUI_fenster(String titel) {
this();
setTitel(titel);
}
public GUI_fenster(String titel, boolean sichtbar) {
this();
setTitel(titel);
setSichtbar(sichtbar);
}
public void setSichtbar(boolean sichtbar) {
fenster.setVisible(sichtbar);
}
public void schliessenBeimSchliessen() {
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
class GUI_tabs {
private JPanel gesamtPanel = new JPanel();
private JPanel northPanel = new JPanel();
private JPanel eastPanel = new JPanel();
private Box southBox;
private JPanel westPanel = new JPanel();
private JPanel centerPanel = new JPanel();
private JLabel ueberschriftLabel = new JLabel();
private GUI_tabs() {
}
public GUI_tabs(String titel, JPanel panel) {
tabs.add(titel, new JPanel());
setCenterPanel(panel);
}
public GUI_tabs(String titel) {
tabs.add(titel, new JPanel());
}
public void setCenterPanel(JPanel panel) {
JPanel panel2 = new JPanel();
panel2.setLayout(new GridBagLayout());
panel2.add(panel);
centerPanel = new JPanel();
centerPanel.add(panel2);
gesamtPanel.setLayout(new BorderLayout());
gesamtPanel.add(BorderLayout.CENTER, panel);
gesamtPanel.validate();
}
}
public static void main(String[] args) {
GUI_fenster fenster = new GUI_fenster();
fenster.schliessenBeimSchliessen();
fenster.setSichtbar(true);
JPanel panel = new JPanel();
JLabel label = new JLabel("abc");
panel.add(label);
fenster.addTab(0, "Test", panel);
panel.add(new JButton("a"));
fenster.getTab(0).setCenterPanel(panel);
fenster.addTab(1, "Test2");
JPanel x = new JPanel();
x.add(new JButton("hi"));
fenster.getTab(1).setCenterPanel(x);
}
}