我可以有一个JMenuBar JTabbedPane?

我正在尝试增加可用于标签内容的空间量。

我怎样才能把一个菜单栏,或等效,旁边的选项卡列表? (最好在标签的左边,图像的对面)

与红色箭头的TabbedPaneDemo

你可以从jide中使用JideTabbedPane。

Jide是商业图书馆,但是这个JideTabbedPane类是开源的,在这里得到源代码: http ://java.net/projects/jide-oss/

截图如下。 在这里输入图像描述

不是,直接不可能没有覆盖整个BacisTabbedPaneUI,所有的例子都是各种各样的质量(外观和感觉和本机操作系统非常敏感), 很好的例子,通过aephyr ,

我的看法JTabbedPane是*** JComponent,通过实现GlassPane的有趣的例子(你已经设置了一些边界为JMenuBar例如提出etchech&线框??? 🙂

疯狂和肮脏的黑客

在这里输入图像描述

在这里输入图像描述

来自代码

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