JTabbedPane mit Buttons neben den Tabs
javax.swing.JTabbedPane
Das folgenden Codebeispiel demonstriert, wie man rechts neben den Tabs unter Verwendung einer GlassPane noch weitere Komponenten (hier Buttons) unterbringen kann:
import javax.swing.*; import java.awt.*; public class TabbedPaneDemo extends JFrame { public TabbedPaneDemo() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); initGUI(); } public void initGUI() { JTabbedPane tabbedPane = new JTabbedPane(); JPanel panel = new JPanel(new GridLayout(1, 2)); for (int i = 0; i < 3; i++) { JPanel tab = new JPanel(); tab.setName("Tab " + (i + 1)); tab.setPreferredSize(new Dimension(400, 300)); tabbedPane.add(tab); } for (int i = 1; i <= 2; i++) { JButton button = new JButton("B" + i); button.setMargin(new Insets(0, 0, 0, 0)); panel.add(button); } add(tabbedPane); pack(); Rectangle tabBounds = tabbedPane.getBoundsAt(0); Container glassPane = (Container) getGlassPane(); glassPane.setVisible(true); glassPane.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.weightx = 1.0; gbc.weighty = 1.0; gbc.insets = new Insets(2, 0, 2, 0); gbc.fill = GridBagConstraints.NONE; gbc.anchor = GridBagConstraints.NORTHEAST; panel.setPreferredSize(new Dimension(75, 18)); glassPane.add(panel, gbc); } public static void main(String[] args) { TabbedPaneDemo frame = new TabbedPaneDemo(); frame.setVisible(true); } }
Bei Problemen mit dem Cursor oder Rollover-Effekten gibt es hier eine Lösung.
Stichworte:
JTabbedPane, Buttons neben den Tabs, rechtsbündig, glasspane, glaspane