java - JTabbedPane 选项卡边框移除

标签 java swing jtabbedpane

JTabbedPane - 即使在使用 BasicTabbedPaneUI 后仍会显示选项卡边框。请让我知道如何更改选项卡之间不显示边框?有什么方法可以完全去除边框吗?

enter image description here

请将代码片段发给我。提前致谢。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.plaf.basic.BasicTabbedPaneUI;

public class TabbedPaneTest implements Runnable {

    @Override
    public void run() {
        final JTabbedPane pane = new JTabbedPane();
        pane.addTab("A", createTab(Color.RED));
        pane.addTab("B", createTab(Color.YELLOW));
        pane.addTab("C", createTab(Color.BLUE));

        pane.setUI(new BasicTabbedPaneUI() {
            @Override
            protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) {

            }
        });
        pane.setBackground(Color.WHITE);

        pane.addChangeListener(new ChangeListener() {

            @Override
            public void stateChanged(ChangeEvent arg0) {
                pane.setForegroundAt(pane.getSelectedIndex(), Color.GREEN);

            }
        });
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(pane);
        frame.pack();
        //frame.setSize(500, 200);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    private JPanel createTab(Color color) {
        JPanel p = new JPanel(new BorderLayout()) {
            private static final long serialVersionUID = 1L;

            @Override
            public Dimension getPreferredSize() {
                return new Dimension(400, 300);
            }
        };
        p.setBorder(BorderFactory.createLineBorder(color, 2));
        p.setBackground(Color.WHITE);
        return p;
    }

    public static void main(String[] args) throws Exception {
        SwingUtilities.invokeLater(new TabbedPaneTest());
    }
}

最佳答案

// Remove the white line under a tab button
Insets insets = UIManager.getInsets("TabbedPane.contentBorderInsets");
insets.top = -1;
UIManager.put("TabbedPane.contentBorderInsets", insets);

关于java - JTabbedPane 选项卡边框移除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32734432/

相关文章:

java - 找不到类的处理程序链文件 handler-chain.xml

java - 调整 GridLayout 区域的大小

java - 切换表格列以输入数据

java - 调用 setComponent() 后无法将面板添加到 jtabbedpane

java - 在 java 中为 jTabbedPane 的选项卡设置光标

jtabbedpane - 如何在 Action Listener 中更改选定的 JtabbedPane

java - 如何在Suse上安装java?

java - Spring PropertyPlaceHolder Java Config 外部属性文件

java - 将 Java 7 ODBC 类包含到 Java 8

java - 在java swing中交换两个项目的屏幕位置?