文章目录

  • 问题一 加载自定义字体
  • 问题二 设置全局字体
  • 问题三 设置全局字体后,如何在不换字体的情况下更改字体参数

今天写代码的时候测试到一半的时候感觉界面的字体太难看,突发奇想想着改下字体,但把自己电脑翻到底也没招到什么好字体,所以去下载了个不是电脑自带的,为了防止代码移植的时候出现问题,所以又加上了个用字体文件设置的问题。

所以这次解决的的问题这么几点:

问题一 加载自定义字体

测试代码:

public class TestFrame extends JFrame {public TestFrame() {setBounds(0, 0, 400, 300);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);setLayout(new FlowLayout());File file = new File("fonts/方正楷体简体.TTF");Font font = null;try {FileInputStream fi = new FileInputStream(file);BufferedInputStream fb = new BufferedInputStream(fi);font = Font.createFont(Font.TRUETYPE_FONT, fb);font = font.deriveFont(Font.PLAIN, 25);} catch (Exception e) { }JLabel label1 = new JLabel("测试Label1");JButton button1 = new JButton("测试button1");JTextField field1 = new JTextField(10);JTextArea area1 = new JTextArea(3, 20);label1.setFont(font);button1.setFont(font);field1.setFont(font);area1.setFont(font);add(label1);add(button1);add(field1);add(area1);}public static void main(String[] args) {TestFrame frame = new TestFrame();frame.validate();}}

代码参考来源

是否修改字体对比

问题二 设置全局字体

Main.java

public class Main {public static void main(String[] args) {try {File file = new File("fonts/方正楷体简体.TTF");Font font = null;FileInputStream fi = new FileInputStream(file);BufferedInputStream fb = new BufferedInputStream(fi);font = Font.createFont(Font.TRUETYPE_FONT, fb);font = font.deriveFont(Font.PLAIN, 25);FontUIResource fontRes = new FontUIResource(font);for (Enumeration<Object> keys = UIManager.getDefaults().keys(); keys.hasMoreElements();) {Object key = keys.nextElement();Object value = UIManager.get(key);if (value instanceof FontUIResource) {UIManager.put(key, fontRes);}}} catch (Exception e) { }new FirstFrame().validate();}}

FirstFrame.java

public class FirstFrame extends JFrame {public FirstFrame() {setTitle("第一个窗口");setBounds(0, 0, 400, 300);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);setLayout(new FlowLayout());JLabel label1 = new JLabel("测试Label1");JButton button1 = new JButton("测试button1");button1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new SecondFrame();}});JTextField field1 = new JTextField(10);JTextArea area1 = new JTextArea(3, 20);add(label1);add(button1);add(field1);add(area1);}
}

SecondFrame.java

public class SecondFrame extends JFrame {public SecondFrame() {setTitle("第二个窗口");setBounds(0, 0, 400, 300);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);setLayout(new FlowLayout());JLabel label1 = new JLabel("测试Label1");JButton button1 = new JButton("测试button1");JTextField field1 = new JTextField(10);JTextArea area1 = new JTextArea(3, 20);add(label1);add(button1);add(field1);add(area1);}}

全局字体设置来源

问题三 设置全局字体后,如何在不换字体的情况下更改字体参数

就像上面两个界面都是直接用了Main.java 设置的字体,那么问题就来了,如果我们仅仅只是想改变某个组件的字体大小呢?总不可能每次都去生成字体在调用吧,所以我找到了一些仅仅只改变原来字体一些参数的方法。

先来看下我们一般用的字体的构造方法吧

public Font(String name, int style, int size);
// name-->字体名 style-->字体样式:斜体粗体类 size-->字体大小

现在来获取当前界面字体

public Font getFont();

但是我们在界面中直接调用这个方法并没有任何效果,这个时候我发现了要先获取当前容器

// JFrame,JDialog 容器获取方法
public Container getContentPane()
// JPanel 容器获取方法 啊,不对,JPanel根本不需要获取容器

好了,当前字体工作已经准备完成了
改变字体的参数

// 改变字体大小
public Font deriveFont(float size);
// 改变字体样式
public Font deriveFont(int style);
// 改变字体名字……呃??名字有啥好改的。。。

来个例子吧

// 在JFrame中
Font font = getContentPane().getFont().deriveFont((float) 10.0);
// 呃。。。我也不知道为什么,反正里面一定要float形,int表示失败。。。
// style 我就不演示了,下面我改变了按钮和文本框的字体大小

还有些不全,可以去这找

Java笔记——关于设置自定义字体、全局字体方面和getFont()的使用相关推荐

  1. java swing 字体设置_如何在Java SWING中设置自定义字体的大小和其他属性(粗体,斜体等)...

    通常,当我初始化我想在SWING应用程序中使用的字体时,我这样做: public static final Font TITLEFONT = new Font("Calibri", ...

  2. Java——文本框设置背景颜色、字体样式和颜色

    ┏(ω)=☞ 本专栏的目录(为您提供更好的查询方式)(点这里说不定有你想要的) 字体风格一共有四种,分别是 Font.PLAIN(普通) Font.BOLD(加粗) Font.ITALIC(斜体) F ...

  3. 工作笔记::VSCode使用笔记--VSCode 设置自定义快捷键 设置自定义运行脚本

    之前开发一个软件,使用的是vscode + cmake + mingw三个结合开发的,需要使用vscode 编写代码,然后使用cmake 根据设置好的规则生成makefile 文件,最后使用mingw ...

  4. java下载文件跳转页面_java servlet笔记:设置编码集、文件下载和两种服务器跳转-java下载文件...

    java笔记 一设置编码集: 设置请求的编码: request.setCharacterEncoding(服务器编码) 在代码中也就是这样: 本身这个语法是对请求实体进行设置编码,针对于post有效, ...

  5. Android 为应用或Textview设置自定义字体,主流字体包

    文章目录 前言 一.assets是什么? 二.APP全局字体 2.1.引入库 2.2.在Application中初始化calligraphy 2.3.让指定的Activity配置自定义字体 2.3.1 ...

  6. Flutter入门:设置全局字体

    引入字体 首先在项目中创建fonts目录,然后将将ttf文件放到该目录下,然后在pubspec文件中添加该字体文件,如: ... flutter:fonts:- family: PingFangfon ...

  7. android app全局字体,Android app全局字体设置

    相信很多对设计追求极致的开发者们对Android系统的默认字体都会感到不满意,这个时候需要使用自定义的字体,当然可以使用系统提供的Typeface来加载自定义字体,但是,一个个TextView的设置, ...

  8. java eclipse字体大小设置_「eclipse字体大小设置」Eclipse中调整字体的大小 - seo实验室...

    eclipse字体大小设置 1.点击window,然后选择preferences,进入下面的界面.在输入框中输入font,然后选择colors and fonts ,再选择basic: 2.在basi ...

  9. WPF设置全局字体和字体嵌入

    WPF设置全局字体和字体嵌入 原文:WPF设置全局字体和字体嵌入 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/CLeopard/article/d ...

  10. Android 全局字体设置

    1.在 BaseActivity 设置 float fontScale=1.4f;@Overridepublic Resources getResources() {//全局字体设置Resources ...

最新文章

  1. 微服务架构的四大金刚利器
  2. 阿里某程序员爆料:面试一个重庆小伙子,却被对方微信调戏!
  3. R语言使用timeROC包计算无竞争情况下的生存资料多个标记物在相同时间下的cox及协变量分析AUC值、并可视化多个标记物在相同时间下的ROC值、多指标的ROC曲线
  4. python3安装cocos2d_(3)在Windows7上搭建Cocos2d-x
  5. mysql的my.cnf
  6. iOS中的图像处理(一)——基础滤镜
  7. ObjectDataSource控件的使用...
  8. Android界面绘制流程--------How Android Draws Views
  9. nupkg格式_nupkg文件怎么打开(package程序安装)
  10. 总结:Oracle 递归查询
  11. 如何在Mac电脑上更改地区或国家?
  12. 前端骨架屏方案与实践
  13. 【链表】leetcode19.删除链表的倒数第N个节点(C/C++/Java/Js)
  14. 【微信小程序】1、SpringBoot整合WxJava开启消息推送
  15. 在Outlook 2007中配置自动存档
  16. 怎么看电脑配置?电脑配置好不好?详细教程来了!
  17. 2.光栅图形显示技术
  18. 程序员必读的职业规划书,少走 5 年弯路(送书)
  19. 基于CC2430的基础实验2-----点阵式LCD驱动
  20. 如何用C语言实现【猜拳游戏】

热门文章

  1. R语言线性混合效应模型实战案例
  2. 分析 : BSOD案例 2013-0821
  3. STM32传感器外设集--心率模块(MAX30102)
  4. 模型运行速度FPS测试以及参数Parameter计算代码
  5. Win7 旗舰版改为专业版(不用重装)
  6. Linux(CentOS)安装 Vim编辑器
  7. 程序员自学编程的6种方法,高效学习
  8. sde mysql_ArcSDE:企业级地理数据库概述
  9. 短视频源码开发,短视频系统源码搭建,从短视频系统起播过程入手
  10. abb机器人编程指令写字_ABB机器人编程指令创建