我在JButton中使用Font Awesome来创建一个可点击的图标,但是当尺寸很小时,生成的图标会显示为别名.正如一些背景知识,Font Awesome是一个可下载的ttf文件(字体文件),其中每个字符都是一个“可缩放的矢量图标”.看过谷歌以前的答案和堆栈溢出,我试图通过覆盖JButton的paintComponent方法来强制消除锯齿;但这似乎没有效果:

import java.awt.*;

import java.io.File;

import java.io.IOException;

import javax.swing.JButton;

import javax.swing.JFrame;

public class Test extends JFrame{

public Test(){

Font fontAwesome = null;

try {

fontAwesome = Font.createFont(Font.TRUETYPE_FONT, new File("font-awesome-4.2.0\fonts\fontawesome-webfont.ttf"));

fontAwesome = fontAwesome.deriveFont(Font.PLAIN, 100);

} catch (FontFormatException | IOException e) {

e.printStackTrace();

}

JButton iconButton = new JButton(""){

@Override

public void paintComponent(Graphics g) {

Graphics2D graphics2d = (Graphics2D) g;

graphics2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

//graphics2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

//graphics2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);

//graphics2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);

super.paintComponent(graphics2d);

}

};

iconButton.setFont(fontAwesome);

iconButton.setFocusPainted(false);

this.add(iconButton);

this.setVisible(true);

this.pack();

}

public static void main(String[] args){

new Test();

}

}

以下图像显示了字体大小为30,100和200的结果字体图标:

如何为小字体强制消除锯齿?

更新:我使用内置的java字体而不是Font Awesome测试了相同的代码,并且完全相同的问题也适用.

java画图消除锯齿_java – JButton文本的消除锯齿相关推荐

  1. java 画图 例子_JAVA简易画图工具

    [实例简介] GUI界面 实现了简单的画线 圆 矩形 以及颜色 供学习参考使用 [实例截图] [核心代码] JPainter └── JPainter ├── bin │   └── cn │   ├ ...

  2. java画图排版_Java实现第八届蓝桥杯图形排版

    标题:图形排版 小明需要在一篇文档中加入 N 张图片,其中第 i 张图片的宽度是 Wi,高度是 Hi. 假设纸张的宽度是 M,小明使用的文档编辑工具会用以下方式对图片进行自动排版: 1. 该工具会按照 ...

  3. java实现单词_java实现简单的英文文本单词翻译器功能示例

    导读热词 本文实例讲述了java实现简单的英文文本单词翻译器功能.分享给大家供大家参考,具体如下: 直接上代码: package fanyi; import java.io.BufferedReade ...

  4. Java画图软件制作

    实现了简单的电脑画图软件,代码如下: import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.CardLa ...

  5. 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发

    今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...

  6. jbutton可以设置id吗_Java JButton.setHorizontalTextPosition方法代碼示例

    本文整理匯總了Java中javax.swing.JButton.setHorizontalTextPosition方法的典型用法代碼示例.如果您正苦於以下問題:Java JButton.setHori ...

  7. 用java的io做一个代码计数器,如何制作Java页面计数器_java

    大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...

  8. java 限制文本框长度_[Java教程]如何限制textarea文本框的输入字数

    [Java教程]如何限制textarea文本框的输入字数 0 2015-12-24 15:00:10 如何限制textarea文本框的输入字数: 在实际应用中,往往需要限制文本框的输入字数的长度,下面 ...

  9. java textfield类方法_java.awt.TextField类

    java.awt.TextField是一个文本框组件 1.构造方法 TextField():创建一个默认长度为一个机器字符长的文本框 TextField(int n):创建一个指定长度为n个机器字符长 ...

最新文章

  1. 并发模型之——基本概念
  2. shellwhile比较_[Shell] if、for、while流程语句以及整数字符串判断比较的实例详解...
  3. 在大流行的世界中如何建立技术社区
  4. 设计模式--请参阅本质
  5. mysql group by cube_SparkSQL 中group by、grouping sets、rollup和cube方法详解
  6. win10无法新建文件夹怎么办 win10右键新建菜单设置方法
  7. bzoj 3355: [Usaco2004 Jan]有序奶牛(拓扑排序+bitset)
  8. bzoj 1681: [Usaco2005 Mar]Checking an Alibi 不在场的证明(BFS)
  9. 推荐两款Docker可视化工具
  10. 网络工程师的机会在哪里
  11. 【车流量计数】基于matlab光流场交通汽车检测跟踪【含Matlab源码 503期】
  12. MySQL调用存储过程和函数
  13. mcafee完全彻底卸载方法
  14. 计算机网络实验一:网线制作和局域网组建
  15. java出现报错java.lang.IndexOutOfBoundsException
  16. Qt之Q_OBJECT
  17. 蓝桥杯大赛(大学B组)—— 数字三角形 (C语言)
  18. Len()、Lenw()与Lenb()函数间的区别
  19. 【Scratch-动作模块】碰到边缘就反弹和翻转方式
  20. 2020读书笔记 《马歇尔传记》

热门文章

  1. 32位服务器系统安装教程,服务器系统数据库安装教程
  2. Linux下的LVM逻辑卷管理
  3. 非线性优化中的KTT条件(知乎文章的理解)
  4. protel 二极管正负极怎么看
  5. 多变量微积分笔记(3)——二重积分
  6. 面试官:设计“抖音”直播功能测试用例吧
  7. iPhone换屏幕测试软件,怎样检验iPhone是否更换过屏幕?
  8. STL的使用和背后数据结构
  9. Kotlin版注解处理器Annotation Processor
  10. 文件包含漏洞及简单绕过