首页 > 解决方案 > 如何在 Java Swing 中制作 JTabbedPane 的圆角

问题描述

我需要像这样制作一个 JTabbedPane(我在 Photoshop 中制作了图像):

敬畏

但在我的外观和感觉(基于 TabbedPaneUI:javax.swing.plaf.basic.BasicTabbedPaneUI)看起来像这样:

敬畏

我该怎么做?

我尝试更改 LAF 属性,但没有找到解决方案。如果我使用 setBorder 方法,摇摆会这样:

jtabbedpane1.setBorder(BorderFactory.createLineBorder(Color.WHITE, 1, true));

敬畏

如上图所示,Java 仅将左上角更改为外边框。

我需要一个可能在扩展的 JTabbedPane 类上使用 Paint 方法的解决方案,但我真的不知道这是否正确或如何做到这一点。

标签: javaswing

解决方案


我阅读了上面的教程并尝试在我的扩展 JTabbedPane 类中覆盖paintComponent 方法,请参阅:

public class MyTabbedPane extends JTabbedPane {    

[...]
@Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.YELLOW);
        g.drawRoundRect(getX()-12, getY()-11, getWidth()-4, getHeight()-22, 6, 6);
    }
}

结果:

https://i.imgur.com/YLXkVRS.jpg


推荐阅读