Kann ich ein JTabbedPane mit einer JMenuBar haben?

Ich versuche, den verfügbaren Platz für den Tab-Inhalt zu erhöhen.

Wie kann ich eine Menüleiste oder Ähnliches neben einer Liste von Registerkarten platzieren? (vorzugsweise auf der linken Seite der Tabs, gegenüber dem Bild)

TabbedPaneDemo mit rotem Pfeil

Sie können JideTabbedPane von jide verwenden.

Jide ist eine kommerzielle Bibliothek, aber diese JideTabbedPane-class ist eine Open-Source-Software, die Sie hier herunterladen können: http://java.net/projects/jide-oss/

Der Screenshot ist wie folgt. Bildbeschreibung hier eingeben

nicht, direkt nicht möglich, ohne Override ganze BacisTabbedPaneUI, alle Beispiele sind verschiedene Qualität (Aussehen und Gefühl und native os sehr empfindlich), sehr gutes Beispiel von Aephyr ,

meine Ansicht JTabbedPane ist *** JComponent, witziges Beispiel von implementiert GlassPane (du hast ein paar Borders für JMenuBar gesetzt zb erhöhe etchech & line border ??? 🙂

verrückt und schmutzig hack

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

aus dem Code

import java.awt.ComponentOrientation; import java.awt.Container; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.Rectangle; import javax.swing.Box; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; public class TabbedPaneWithManuBar { public void makeUI() { JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); for (int i = 0; i < 20; i++) { JPanel panel = new JPanel(); panel.setName("tab" + (i + 1)); panel.setPreferredSize(new Dimension(600, 100)); tabbedPane.add(panel); } JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(tabbedPane); frame.pack(); Rectangle tabBounds = tabbedPane.getBoundsAt(0); Container glassPane = (Container) frame.getRootPane().getGlassPane(); glassPane.setVisible(true); glassPane.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.weightx = 1.0; gbc.weighty = 1.0; gbc.fill = GridBagConstraints.NONE; gbc.insets = new Insets(tabBounds.y + 23, 0, 0, 5); gbc.anchor = GridBagConstraints.NORTHEAST; JMenuBar menuBar = new JMenuBar(); menuBar.add(createMenu("Menu Example 1")); menuBar.add(createMenu("Menu Example 1")); menuBar.add(createMenu("Menu Example 1")); menuBar.add(Box.createHorizontalGlue()); menuBar.add(createMenu("About")); menuBar.setPreferredSize(new Dimension(menuBar.getPreferredSize().width , (int) tabBounds.getHeight() - 2)); glassPane.add(menuBar, gbc); //JButton button = new JButton("My Button Position"); //button.setPreferredSize(new Dimension(button.getPreferredSize().width, (int) tabBounds.getHeight() - 2)); //glassPane.add(button, gbc); frame.setLocationRelativeTo(null); frame.setVisible(true); } private JMenu createMenu(String title) { JMenu m = new JMenu(title); m.add("Menu item #1 in " + title); m.add("Menu item #2 in " + title); m.add("Menu item #3 in " + title); if (title.equals("About")) { m.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); } return m; } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new TabbedPaneWithManuBar().makeUI(); } }); } }