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;
}
}这是上面创建的代码片段的屏幕截图。您可以看到在选项卡式窗格的右上方添加了一个按钮,以便您可以滚动浏览隐藏的选项卡。