Posso avere un JTabbedPane con una JMenuBar?

Sto cercando di aumentare la quantità di spazio disponibile per il contenuto della scheda.

Come posso inserire una barra dei menu, o equivalente, accanto a un elenco di tabs? (preferibilmente a sinistra delle linguette, di fronte all’immagine)

TabbedPanoDemo con freccia rossa

Puoi usare JideTabbedPane da jide.

Jide è una libreria commerciale, ma questa class JideTabbedPane è open source, trova qui il codice sorgente: http://java.net/projects/jide-oss/

lo screenshot è come sotto. inserisci la descrizione dell'immagine qui

no, direttamente non è ansible senza eseguire l’override dell’intero BacisTabbedPaneUI, tutti gli esempi sono di varia qualità (look and feel e sistema operativo nativo molto sensibile), ottimo esempio di aephyr ,

il mio punto di vista JTabbedPane è *** JComponent, divertente esempio di implementazioni GlassPane (hai impostato alcuni bordi per JMenuBar, ad es. sollevato etchech e bordo di linea ??? 🙂

hack pazzo e sporco

inserisci la descrizione dell'immagine qui

inserisci la descrizione dell'immagine qui

dal codice

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(); } }); } }