java - 如何在 Java Swing 中制作 JTabbedPane 的圆角
问题描述
我需要像这样制作一个 JTabbedPane(我在 Photoshop 中制作了图像):
但在我的外观和感觉(基于 TabbedPaneUI:javax.swing.plaf.basic.BasicTabbedPaneUI)看起来像这样:
我该怎么做?
我尝试更改 LAF 属性,但没有找到解决方案。如果我使用 setBorder 方法,摇摆会这样:
jtabbedpane1.setBorder(BorderFactory.createLineBorder(Color.WHITE, 1, true));
如上图所示,Java 仅将左上角更改为外边框。
我需要一个可能在扩展的 JTabbedPane 类上使用 Paint 方法的解决方案,但我真的不知道这是否正确或如何做到这一点。
解决方案
我阅读了上面的教程并尝试在我的扩展 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);
}
}
结果:
推荐阅读
- c++ - 关于 c++ 中面向对象的 decltype 类型
- c++ - 在 arm neon 中有效地重新洗牌和组合 16 个 3 位数字
- javascript - 显示对象数组在浏览器中不起作用
- mysql - 我可以让这个 mySQL 查询更快吗?
- json - Jackson 反序列化导致“java.util.LinkedHashMap 无法转换为 model.Artists”
- javascript - 为什么我应该在类中使用 bind(this) 和方法?
- mamp - MAMP - 单击“启动服务器”后收到错误请求
- qt - Qml FolderListModel 无法访问共享文件夹
- powershell - PowerShell IComparable 与子类
- neo4j - 在 Neo4j 中查询不存在的标签时,MyBatis 映射器永远不会返回