JTabbedPane的“组件”标签布局策略可以设置为JTabbedPane.SCROLL_TAB_LAYOUT或JTabbedPane.WRAP_TAB_LAYOUT。如果无法一次性显示选项卡,则此布局策略将控制选项卡的显示。默认情况下,布局策略设置为JTabbedPane.WRAP_TAB_LAYOUT。更改选项卡布局策略以JTabbedPane.SCROLL_TAB_LAYOUT使选项卡可滚动。在选项卡式窗格中将显示一个用于左右滚动或上下滚动的按钮。
package org.nhooo.example.swing; import javax.swing.*; import java.awt.*; public class TabbedPaneTabLayoutPolicy extends JPanel { public TabbedPaneTabLayoutPolicy() { initializeUI(); } public static void showFrame() { JPanel panel = new TabbedPaneTabLayoutPolicy(); panel.setOpaque(true); JFrame frame = new JFrame("TabbedPane Tab Layout Policy Demo"); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setContentPane(panel); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { TabbedPaneTabLayoutPolicy.showFrame(); } }); } private void initializeUI() { this.setLayout(new BorderLayout()); this.setPreferredSize(new Dimension(400, 200)); // 使用滚动标签布局策略创建一个JTabbedPane JTabbedPane pane = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); pane.addTab("One", createPanel("One")); pane.addTab("Two", createPanel("Two")); pane.addTab("Three", createPanel("Three")); pane.addTab("Four", createPanel("Four")); pane.addTab("Five", createPanel("Five")); pane.addTab("Six", createPanel("Six")); pane.addTab("Seven", createPanel("Seven")); pane.addTab("Eight", createPanel("Eight")); pane.addTab("Nine", createPanel("Nine")); pane.addTab("Ten", createPanel("Ten")); this.add(pane, BorderLayout.CENTER); } private JPanel createPanel(String title) { JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(new JLabel(title), BorderLayout.NORTH); return panel; } }
这是上面创建的代码片段的屏幕截图。您可以看到在选项卡式窗格的右上方添加了一个按钮,以便您可以滚动浏览隐藏的选项卡。