Java 如何在JTabbedPane中生成双线

Java 如何在JTabbedPane中生成双线,java,swing,jtabbedpane,Java,Swing,Jtabbedpane,我不确定我的头衔有多大意义,但既然你被认为有一个不错的头衔,这是我想到的最好的,所以我实际上的意思是 假设理论上我有10个标签,我不想把它们都压缩在一行中,而是把它们分成两行,所以我在上面有5个标签,在下面有5个标签。 示例pic:如果您希望它们都显示在一行中(我认为这是您描述的后半部分所指出的…),您需要将选项卡布局策略设置为JTabbedPane。滚动\u tab\u layout 这是一个带有图像的选项卡。如果您希望它们都显示在一行中(我认为这是您描述的后半部分所指示的…),您需要将选项卡

我不确定我的头衔有多大意义,但既然你被认为有一个不错的头衔,这是我想到的最好的,所以我实际上的意思是

假设理论上我有10个标签,我不想把它们都压缩在一行中,而是把它们分成两行,所以我在上面有5个标签,在下面有5个标签。
示例pic:

如果您希望它们都显示在一行中(我认为这是您描述的后半部分所指出的…),您需要将选项卡布局策略设置为
JTabbedPane。滚动\u tab\u layout


这是一个带有图像的选项卡。

如果您希望它们都显示在一行中(我认为这是您描述的后半部分所指示的…),您需要将选项卡布局策略设置为
JTabbedPane。滚动\u tab\u layout


这是一个带有图像的示例。

不清楚您的问题,但JTabbedPane中有一些选项卡的基本方法

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

public class TabComponentsDemo extends JFrame {

    private static final long serialVersionUID = 1L;
    private final int tabNumber = 15;
    private final JTabbedPane pane = new JTabbedPane();
    private JMenuItem tabComponentsItem;
    private JMenuItem scrollLayoutItem;

    public TabComponentsDemo(String title) {
        super(title);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        initMenu();
        add(pane);
    }

    public void runTest() {
        pane.removeAll();
        for (int i = 0; i < tabNumber; i++) {
            String title = "Tab " + i;
            pane.add(title, new JLabel(title));
            //initTabComponent(i);
        }
        tabComponentsItem.setSelected(true);
        pane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);
        scrollLayoutItem.setSelected(false);
        setSize(new Dimension(400, 200));
        setLocationRelativeTo(null);
        setVisible(true);
    }

    /*private void initTabComponent(int i) {
    pane.setTabComponentAt(i, new ButtonTabComponent(pane));
    }*/
    private void initMenu() {//Setting menu
        JMenuBar menuBar = new JMenuBar();//create Options menu        
        tabComponentsItem = new JCheckBoxMenuItem("Use TabComponents", true);
        tabComponentsItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.ALT_MASK));
        tabComponentsItem.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                for (int i = 0; i < pane.getTabCount(); i++) {
                    if (tabComponentsItem.isSelected()) {
                        //initTabComponent(i);
                    } else {
                        pane.setTabComponentAt(i, null);
                    }
                }
            }
        });
        scrollLayoutItem = new JCheckBoxMenuItem("Set ScrollLayout");
        scrollLayoutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.ALT_MASK));
        scrollLayoutItem.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if (pane.getTabLayoutPolicy() == JTabbedPane.WRAP_TAB_LAYOUT) {
                    pane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
                } else {
                    pane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);
                }
            }
        });
        JMenuItem resetItem = new JMenuItem("Reset JTabbedPane");
        resetItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.ALT_MASK));
        resetItem.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                runTest();
            }
        });
        JMenu optionsMenu = new JMenu("Options");
        optionsMenu.add(tabComponentsItem);
        optionsMenu.add(scrollLayoutItem);
        optionsMenu.add(resetItem);
        menuBar.add(optionsMenu);
        setJMenuBar(menuBar);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                UIManager.put("swing.boldMetal", Boolean.FALSE);
                new TabComponentsDemo("TabComponentsDemo").runTest();
            }
        });
    }
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.ActionListener;
导入java.awt.event.ActionEvent;
导入java.awt.event.InputEvent;
导入java.awt.event.KeyEvent;
公共类TabComponentsDemo扩展了JFrame{
私有静态最终长serialVersionUID=1L;
私有最终整数tabNumber=15;
专用最终JTabbedPane窗格=新JTabbedPane();
私有JMenuItem tabComponentsItem;
私有JMenuItem scrollLayoutItem;
公共选项卡ComponentsDemo(字符串标题){
超级(标题);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initMenu();
添加(窗格);
}
公共无效运行测试(){
pane.removeAll();
对于(int i=0;i
不清楚您的问题,但JTabbedPane中有选项卡的基本方法

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

public class TabComponentsDemo extends JFrame {

    private static final long serialVersionUID = 1L;
    private final int tabNumber = 15;
    private final JTabbedPane pane = new JTabbedPane();
    private JMenuItem tabComponentsItem;
    private JMenuItem scrollLayoutItem;

    public TabComponentsDemo(String title) {
        super(title);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        initMenu();
        add(pane);
    }

    public void runTest() {
        pane.removeAll();
        for (int i = 0; i < tabNumber; i++) {
            String title = "Tab " + i;
            pane.add(title, new JLabel(title));
            //initTabComponent(i);
        }
        tabComponentsItem.setSelected(true);
        pane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);
        scrollLayoutItem.setSelected(false);
        setSize(new Dimension(400, 200));
        setLocationRelativeTo(null);
        setVisible(true);
    }

    /*private void initTabComponent(int i) {
    pane.setTabComponentAt(i, new ButtonTabComponent(pane));
    }*/
    private void initMenu() {//Setting menu
        JMenuBar menuBar = new JMenuBar();//create Options menu        
        tabComponentsItem = new JCheckBoxMenuItem("Use TabComponents", true);
        tabComponentsItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.ALT_MASK));
        tabComponentsItem.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                for (int i = 0; i < pane.getTabCount(); i++) {
                    if (tabComponentsItem.isSelected()) {
                        //initTabComponent(i);
                    } else {
                        pane.setTabComponentAt(i, null);
                    }
                }
            }
        });
        scrollLayoutItem = new JCheckBoxMenuItem("Set ScrollLayout");
        scrollLayoutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.ALT_MASK));
        scrollLayoutItem.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if (pane.getTabLayoutPolicy() == JTabbedPane.WRAP_TAB_LAYOUT) {
                    pane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
                } else {
                    pane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);
                }
            }
        });
        JMenuItem resetItem = new JMenuItem("Reset JTabbedPane");
        resetItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.ALT_MASK));
        resetItem.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                runTest();
            }
        });
        JMenu optionsMenu = new JMenu("Options");
        optionsMenu.add(tabComponentsItem);
        optionsMenu.add(scrollLayoutItem);
        optionsMenu.add(resetItem);
        menuBar.add(optionsMenu);
        setJMenuBar(menuBar);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                UIManager.put("swing.boldMetal", Boolean.FALSE);
                new TabComponentsDemo("TabComponentsDemo").runTest();
            }
        });
    }
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.ActionListener;
导入java.awt.event.ActionEvent;
导入java.awt.event.InputEvent;
导入java.awt.event.KeyEvent;
公共类TabComponentsDemo扩展了JFrame{
私有静态最终长serialVersionUID=1L;
私有最终整数tabNumber=15;
专用最终JTabbedPane窗格=新JTabbedPane();
私有JMenuItem tabComponentsItem;
私有JMenuItem scrollLayoutItem;
公共选项卡ComponentsDemo(字符串标题){
超级(标题);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initMenu();
添加(窗格);
}
公共无效运行测试(){
pane.removeAll();
对于(int i=0;i