如何平滑圆角矩形的角,Swing?

2024-03-04

当我尝试制作圆角矩形时,我的角变得非常像素化。有什么办法可以平滑它们吗?

这是一张图片(注意角落):

以下是我子类化并重写绘制方法的按钮的代码(带有像素化角的按钮):

public class ControlButton extends JButton {

    public final static Color BUTTON_TOP_GRADIENT = new Color(176, 176, 176);
    public final static Color BUTTON_BOTTOM_GRADIENT = new Color(156, 156, 156);

    public ControlButton(String text) {
        setText(text);
    }

    public ControlButton() {
    }

    @Override
    protected void paintComponent(Graphics g){
        Graphics2D g2 = (Graphics2D)g.create();
        g2.setPaint(new GradientPaint(
                new Point(0, 0), 
                BUTTON_TOP_GRADIENT, 
                new Point(0, getHeight()), 
                BUTTON_BOTTOM_GRADIENT));
        g2.fillRoundRect(0, 0, getWidth(), getHeight(), 20, 20);
        g2.dispose();
    }
}

尝试这个:

RenderingHints qualityHints = new RenderingHints(
  RenderingHints.KEY_ANTIALIASING,
  RenderingHints.VALUE_ANTIALIAS_ON );
qualityHints.put(
  RenderingHints.KEY_RENDERING,
  RenderingHints.VALUE_RENDER_QUALITY );
g2.setRenderingHints( qualityHints );

看一下文档:

  • http://docs.oracle.com/javase/tutorial/2d/advanced/quality.html http://docs.oracle.com/javase/tutorial/2d/advanced/quality.html

Code:

import javax.swing.*;

import java.awt.*;

public class ControlButton extends JButton {

  public final static Color BUTTON_TOP_GRADIENT = new Color(176, 176, 176);
  public final static Color BUTTON_BOTTOM_GRADIENT = new Color(156, 156, 156);

  public ControlButton(String text) {
    setText(text);
  }

  public ControlButton() {
  }

  @Override
  protected void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D)g.create();
    RenderingHints qualityHints =
      new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    qualityHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    g2.setRenderingHints(qualityHints);

    g2.setPaint(new GradientPaint(new Point(0, 0), BUTTON_TOP_GRADIENT, new Point(0, getHeight()),
                                  BUTTON_BOTTOM_GRADIENT));
    g2.fillRoundRect(0, 0, getWidth(), getHeight(), 20, 20);
    g2.dispose();
  }

  public static void main(String args[]) {
    JFrame frame = new JFrame("test");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(new ControlButton("Hello, World"));
    frame.pack();
    frame.setVisible(true);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何平滑圆角矩形的角,Swing? 的相关文章

  • Java 扫描仪问题 (JFrame)

    我正在尝试使用扫描仪来编辑塔防游戏的级别 但是 它不会将级别 图块图像 更新为自定义文件的级别 0 是草 1 是石头 1 是什么都没有 等等 我发现了错误 但如何修复它 我需要添加 更改什么才能消除这个错误 java lang NullPo
  • 为 Nimbus 外观设计简单的单元渲染器

    我有一个简单的单元格渲染器 它由一些组成JLabels 渲染器本身扩展JPanel 并且我正在尝试让它在 Nimbus 的外观和感觉中合理地渲染 基本上发生的事情是在lighter行 正如 Nimbus 所具有的交替行着色 我的特定单元格渲
  • 在 Spring 中使用事务时创建提交后

    由于某些原因 我使用 Spring PlatformTransactionManager 手动执行事务提交和回滚 我需要做的是设置一个钩子 以便在提交事务后发生提交后操作 通过查看 void commit TransactionStatus
  • 可以使用注解进行代码注入吗?

    我意识到这可能是一个已经被提出和回答的问题 但请耐心等待 我想知道是否可以使用注释将代码注入到类编译时 典型的示例是为对象的成员生成 getter 和 setter 这并不完全是我所需要的 但它可以说明基本思想 现在在互联网上我得到的基本答
  • 正则表达式查找两个字符之间的内部匹配

    环境 Java 我想匹配两个字符串之间的字符 这是一个例子 foo
  • 请放心,如何在 POST 请求后从响应正文中提取生成的令牌并将其设置到标头

    执行任何请求 我需要执行身份验证POST请求正文 username somename password somepass 标头Content Type application json这给了我一个带有生成令牌的响应 我需要将其粘贴为第二个标
  • 有没有办法在@Service上使用@ControllerAdvice

    我有一个项目需求 但我没有任何需求 Controller or RestController但我需要为我的服务层提供一个全局异常处理程序 所以我需要配置 ControllerAdvice on Service 请告诉我是否还有其他方法可以做
  • Java SSO 与 Wildfly 8、Java 1.8.0_45 和 Active Directory

    我对这个主题进行了很多搜索 但找不到解决方案 要求的简短描述 Wildfly 8 2 下 Web 应用程序上的 SSO 在 Active Directory 中验证 Windows 用户的身份 当 SSO 失败时回退到登录表单 在 Wild
  • Java检测音频文件(mp3)

    我有这段代码可以读取 mp3 文件 import java io File import java io IOException import javax sound sampled AudioSystem import javax sou
  • Jlist 自定义渲染器

    我正在尝试添加一个我猜你会称其为列表中每个项目的子列表 我构建了一个自定义渲染器 它提供以下输出 正如你所看到的 有些东西不对劲 我没能找到问题的答案 我猜我需要更改面板布局中的某些内容才能获得正确的结果 但不知道是什么 https i s
  • 在 Tomcat 中触发内部 ServletRequest

    我正在使用 Quartz 来安排 Web 应用程序的后台任务 其中一些任务只是针对同一 Web 应用程序发出请求 我想避免依赖于任何类型的网络设置 例如 如果从数据中心内发出带有我自己域名的请求 则可能无法正确路由 是否有一个 Java A
  • 为什么对象可以改变类变量的值?

    由甲骨文提供定义 http docs oracle com javase tutorial java javaOO classvars html 有时 您希望拥有所有对象共有的变量 这是通过 static 修饰符来完成的 声明中带有 sta
  • 无法使用 Jsoup HTML 解析器 Java 实现某些功能

    我无法使用 Jsoup Java 库解析以下场景的一些文本 1 This is b My Text b some other b b text as well b b b non empty tag1 b other text 预期输出 s
  • 在硬件级别模拟按键 - Windows

    我正在寻找一种语言或库 使我能够在最大可能的水平上模拟击键 而无需实际按下按键 我对击键级别的具体衡量标准是 当我的计算机已经运行按键侦听器 例如鼠标键和粘滞键 时 它是否会产生与物理按键相同的输出 我尝试过很多击键模拟的方法 java A
  • 使用 Swift 在 iOS 和 Android 之间共享核心代码

    我想要的是 使用 Swift 在 Android 和 iOS 之间共享非 UI 代码 问题 Android 具有 NDK 支持 允许您使用 Java 本机接口 JNI 运行 C 和 C 代码 不是 Objective C 我是一名Java程
  • Apache Beam:如何在使用重复数据删除功能时解决“ParDo 需要确定性密钥编码器才能使用状态和计时器”

    我正在尝试使用 Apache Beam 的重复数据删除功能对来自 Google Cloud Pubsub 的输入消息进行重复数据删除 但是 我创建后遇到错误KV
  • Java 需要一个 FileSet 包/类

    任何人都可以建议 Java 中的 FileSet 包 类吗 我所说的 FileSet 是指文件和目录的集合以及正则表达式支持的包含和排除规则 类似于 Apache Ant 谢谢 Apache 公共 IO文件工具 http commons a
  • 在 Android 版 ORMLite 中加入类会引发 SQL 异常:找不到外部类,反之亦然

    我正在尝试使用 QueryBuilder 为两个不同的类创建一个联接查询 一个Product类和一个Coupon类 引用 Product 属性 storeId public class Coupon DatabaseField column
  • Spring MVC 和复选框

    我正在使用 Spring MVC 3 0 并且不能完全看到这个问题的所有部分 我的控制器将生成一个域对象列表 假设有一个简单的 User 对象 具有firstName lastName age 和role 属性 我想在表中输出该用户列表 每
  • java银行程序帐户ID不上去?

    每次创建银行帐户时 帐户 ID 都应增加 1 但每次我尝试提取 Id 时 我只会得到帐户 ID 为 0 任何建议 因为我完全按照我学习的书中的方式进行操作而且它仍然没有更新 帐户构造函数 public class BankAccount p

随机推荐

  • 我如何解码这个恶意软件 PHP 脚本? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我只是注意
  • 文本未出现在 XTS 图上

    我在使用 R 向时间序列数据图中添加一些文本时遇到问题xts 我已经制作了一个简单的问题示例 My text 命令似乎什么也没做 而我可以在图中添加一个点 我尝试尽可能使用默认值来保持代码简单 require quantmod fetch
  • intentService :为什么我的 onHandleIntent 从未被调用?

    我正在使用 android xml rpc 来安装服务器 为此 我正在使用intentService 唯一的问题是 当启动服务器类时 我的包含服务器的 onHandleIntent 永远不会被调用 我做了一些研究 发现有人有同样的问题 他设
  • 为 sklearn 梯度增强分类器设置自定义损失

    Sklearn 梯度增强分类器接受偏差和指数损失 详见here https scikit learn org stable modules ensemble html gradient boosting and here https sci
  • Java 性能技巧

    我有一个程序从 C 移植到 Java 这两个应用程序都使用快速排序来排序一些分区数据 基因组坐标 Java 版本运行速度很快 但我想让它更接近 C 版本 我使用的是 Sun JDK v6u14 显然 我无法与 C 应用程序相媲美 但我想了解
  • 如何在 python 中合并列表? [复制]

    这个问题在这里已经有答案了 我有 2 个列表 例如 1 2 3 和 4 5 6 如何将它们合并到 1 个新列表中 1 2 3 4 5 6 不是 1 2 3 4 5 6 运算符可用于合并两个列表 data1 1 2 3 data2 4 5 6
  • Angular 2 下拉菜单中的 bootstrap 4 不起作用

    我按照以下步骤将 bootstrap 4 安装到我的 Angular 2 项目中 接受答案 遵循前 1 2 3 和 4 个步骤 https stackoverflow com questions 37649164 how to add bo
  • 在 SpriteKit 中预加载纹理

    我做了一些研究 但似乎找不到任何可以清楚解释如何在动画中预加载单个纹理和纹理的内容 我目前正在使用Atlas s in Assets xcassets对相关的动画图像进行分组 我的图像出现在 Atlas 中是否意味着它们已被预加载 就单个图
  • Bootstrap 轮播图像未以全宽显示

    我正在创造一个简单的 HTML 模板 http zulhfreelancer com projects omar 使用Bootstrap 3 我在中等尺寸显示中检查模板 看起来不错 但是当我在更大的显示器 和更高分辨率 中检查它时 我在轮播
  • 为什么非常大的 Spark 阶段不使用所有可用的执行器?

    我正在运行一个包含一些非常大的阶段 例如 gt 20k 任务 的 Spark 作业 并使用 1k 到 2k 执行器运行它 在某些情况下 阶段似乎运行不稳定 随着时间的推移 许多可用的执行器变得空闲 尽管仍然处于有许多未完成任务的阶段中间 从
  • 编码 UI - 无法识别 Wpfbrowser 上的 html 控件

    我是 CodedUI 和 C 的新手 我正在尝试自动化具有 WPF 浏览器的 wpf 应用程序 基本上 它是一个 WPF 容器 里面有 html 内容 我创建了一个类似的示例小应用程序并在这里分享 此应用程序在 wpfwindow 中打开
  • 将 jquery 日期选择器位置设置为文本字段的顶部

    Jquery datepicker 显示在测试字段下 有时它会出现在文本字段的顶部 但我想始终将日期选择器显示在测试字段的顶部 怎么做 以下代码将始终将日历放置在输入字段的顶部 txtDate datepicker beforeShow f
  • Google Drive 将元数据添加到文件

    我想使用 googledrive api 来搜索文件 我想向其中添加元数据 Example File computers1 pdf Brand brand1 File computers2 pdf Brand brand2 File com
  • 在 ER 图中定义实体、属性和关系的基本规则是什么?

    构建 E R 图时 以下哪项必须具有关键and属性 entity 实体类型 关系类型 关系 具有关系类型的元组 在原始的实体 关系方法中 我们识别实体类型和关系 关联类型及其相关属性 在绘制 ER 图时 我们选择一组或多组可以将类型实例标识
  • 在 Windows 7 家庭普通版上找不到 IIS

    我刚刚购买了一台全新的联想 idealpad 笔记本电脑 运行 Windows 7 Home Basic 库存中没有操作系统 DVD 但笔记本电脑确实有操作系统恢复软件 如果您想将它们刻录到 DVD 上的话 我想今天大多数硬件都是这样销售的
  • Go 中如何处理 i18n?

    我在网上搜索但没有找到任何与 i18n 和 Go 相关的内容 我希望使用 Go 来开发网站 应对国际化的最佳方式是什么 go i18n http nicksnyder github io go i18n 有一些不错的功能 实施CLDR 复数
  • 如何查询 SQL Server TEXT 列中包含 XML(不是 xml 列类型)的值

    我有表文档 DOCUMENTS DOCUMENTID int USERID int CONTENT text 我在 SQL Server 数据库中将以下 XML 存储在名为 CONTENT 的 TEXT 列中
  • 如何使用 spring DSL 在camel 中记录标头值

    这看起来应该很简单 请原谅双关语 我正在尝试在 Spring DSL 路由中的 Camel 中记录标头 我已经看到了答案Java DSL https stackoverflow com questions 15111044 how to a
  • ASP.NET:显式本地化与隐式本地化?

    在我看来 隐式本地化相对于显式本地化的优势在于 如果您有多个属性要针对给定控件进行本地化 那么这是一种更经济的语法 如果您只需要本地化一些文本 我会使用 asp Localize 控件 该控件仅具有呈现到 UI 的单个属性 文本 有理由使用
  • 如何平滑圆角矩形的角,Swing?

    当我尝试制作圆角矩形时 我的角变得非常像素化 有什么办法可以平滑它们吗 这是一张图片 注意角落 以下是我子类化并重写绘制方法的按钮的代码 带有像素化角的按钮 public class ControlButton extends JButto