Hey, folgendes KSKB:
Frage: Warum wächst das TabbedPane mit jedem neuen Tab in die CENTER-Komponente rein? Alle Tab-Komponenten sind doch gleich groß, es gibt keinen Grund dafür dass das TabbedPane höher werden muss.
Ich vermute das hat was mit dem Layout zu tun*, d.h. BorderLayout.SOUTH. Ich werd's gleich noch mit nem GridBagLayout versuchen, aber trotzdem ist das an sich ja schon mal irgendwie komisch... Wie kommt die TabbedPane denn darauf dass sie jetzt auf einmal höher sein müsste?
*update: Nein, hat es scheinbar nicht.
Danke
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
@SuppressWarnings("serial")
public class KSKB extends JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new KSKB().setVisible(true);
}
});
}
KSKB() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTabbedPane tabs = new JTabbedPane();
tabs.addTab("Tab", createTabComponent());
JButton btn = new JButton("Add Tab");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tabs.addTab("New Tab", createTabComponent());
}
});
JPanel panel = new JPanel();
panel.setBackground(Color.BLUE);
panel.setPreferredSize(new Dimension(500, 300));
setLayout(new BorderLayout());
add(btn, BorderLayout.NORTH);
add(panel, BorderLayout.CENTER);
add(tabs, BorderLayout.SOUTH);
pack();
}
static JComponent createTabComponent() {
JButton btn = new JButton("Button");
// Mit der Größe der Komponente des Tabs hat das scheinbar nix zu tun:
// btn.setPreferredSize(new Dimension(0, 100));
return btn;
}
}
Frage: Warum wächst das TabbedPane mit jedem neuen Tab in die CENTER-Komponente rein? Alle Tab-Komponenten sind doch gleich groß, es gibt keinen Grund dafür dass das TabbedPane höher werden muss.
Ich vermute das hat was mit dem Layout zu tun*, d.h. BorderLayout.SOUTH. Ich werd's gleich noch mit nem GridBagLayout versuchen, aber trotzdem ist das an sich ja schon mal irgendwie komisch... Wie kommt die TabbedPane denn darauf dass sie jetzt auf einmal höher sein müsste?
*update: Nein, hat es scheinbar nicht.
Danke
Zuletzt bearbeitet: