提问人: 提问时间:11/4/2023 最后编辑:camickr 更新时间:11/5/2023 访问量:43
如何删除JTabbedPane边框?
How to remove JTabbedPane border?
问:
我想删除笨拙的蓝色边框,我无法通过这样做来删除。有什么方法可以做到这一点?myTabbedPane.setBorder(null);
这是我说的蓝色边框:
由于我是 swing java 库的新手,我还想知道如果没有方法/它不起作用,组件的所有属性是如何更改的。我听说有一种叫做UIManager的东西,但我找不到关于它的有用信息。
我唯一尝试的是调用setBorder属性并对其调用null。
答:
1赞
Michael
11/5/2023
#1
这些属性由您正在使用的外观(例如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());
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);
}
}
评论