如何去除JTabbedPane边框?

问题描述 投票:0回答:1

我想删除尴尬的蓝色边框,我无法通过执行

myTabbedPane.setBorder(null);
删除它。有什么方法可以做到这一点?

这就是我说的蓝色边框:

由于我是 swing java 库的新手,我也想知道如果没有方法/它不起作用,如何更改组件的所有属性。我听说有一个叫做 UIManager 的东西,但我找不到有关它的有用信息。

我唯一尝试的就是调用 setBorder 属性并对其调用 null。

java swing border jtabbedpane
1个回答
0
投票

这些属性由您使用的外观和感觉定义(例如 Windows L&F 或 Metal L&F)。

您可以全局更改这些属性(即这适用于您正在使用的所有 JTabbedPanes)。以下代码适用于 Windows L&F 和 Motiv L&F(您需要检查其他 L&F 实现):

import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
import java.awt.BorderLayout;
import java.awt.Insets;

public class Main extends JFrame {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Main());
    }
    public Main() {
        this.setLayout(new BorderLayout());

        JTabbedPane pane = new JTabbedPane();
        pane.addTab("A", new JPanel());
        pane.addTab("B", new JPanel());
        pane.addTab("C", new JPanel());

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

        this.add(pane, BorderLayout.CENTER);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(800, 600);
        this.setVisible(true);
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.