Java笔记——关于设置自定义字体、全局字体方面和getFont()的使用
文章目录
- 问题一 加载自定义字体
- 问题二 设置全局字体
- 问题三 设置全局字体后,如何在不换字体的情况下更改字体参数
今天写代码的时候测试到一半的时候感觉界面的字体太难看,突发奇想想着改下字体,但把自己电脑翻到底也没招到什么好字体,所以去下载了个不是电脑自带的,为了防止代码移植的时候出现问题,所以又加上了个用字体文件设置的问题。
所以这次解决的的问题这么几点:
问题一 加载自定义字体
测试代码:
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()的使用相关推荐
- java swing 字体设置_如何在Java SWING中设置自定义字体的大小和其他属性(粗体,斜体等)...
通常,当我初始化我想在SWING应用程序中使用的字体时,我这样做: public static final Font TITLEFONT = new Font("Calibri", ...
- Java——文本框设置背景颜色、字体样式和颜色
┏(ω)=☞ 本专栏的目录(为您提供更好的查询方式)(点这里说不定有你想要的) 字体风格一共有四种,分别是 Font.PLAIN(普通) Font.BOLD(加粗) Font.ITALIC(斜体) F ...
- 工作笔记::VSCode使用笔记--VSCode 设置自定义快捷键 设置自定义运行脚本
之前开发一个软件,使用的是vscode + cmake + mingw三个结合开发的,需要使用vscode 编写代码,然后使用cmake 根据设置好的规则生成makefile 文件,最后使用mingw ...
- java下载文件跳转页面_java servlet笔记:设置编码集、文件下载和两种服务器跳转-java下载文件...
java笔记 一设置编码集: 设置请求的编码: request.setCharacterEncoding(服务器编码) 在代码中也就是这样: 本身这个语法是对请求实体进行设置编码,针对于post有效, ...
- Android 为应用或Textview设置自定义字体,主流字体包
文章目录 前言 一.assets是什么? 二.APP全局字体 2.1.引入库 2.2.在Application中初始化calligraphy 2.3.让指定的Activity配置自定义字体 2.3.1 ...
- Flutter入门:设置全局字体
引入字体 首先在项目中创建fonts目录,然后将将ttf文件放到该目录下,然后在pubspec文件中添加该字体文件,如: ... flutter:fonts:- family: PingFangfon ...
- android app全局字体,Android app全局字体设置
相信很多对设计追求极致的开发者们对Android系统的默认字体都会感到不满意,这个时候需要使用自定义的字体,当然可以使用系统提供的Typeface来加载自定义字体,但是,一个个TextView的设置, ...
- java eclipse字体大小设置_「eclipse字体大小设置」Eclipse中调整字体的大小 - seo实验室...
eclipse字体大小设置 1.点击window,然后选择preferences,进入下面的界面.在输入框中输入font,然后选择colors and fonts ,再选择basic: 2.在basi ...
- WPF设置全局字体和字体嵌入
WPF设置全局字体和字体嵌入 原文:WPF设置全局字体和字体嵌入 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/CLeopard/article/d ...
- Android 全局字体设置
1.在 BaseActivity 设置 float fontScale=1.4f;@Overridepublic Resources getResources() {//全局字体设置Resources ...
最新文章
- 微服务架构的四大金刚利器
- 阿里某程序员爆料:面试一个重庆小伙子,却被对方微信调戏!
- R语言使用timeROC包计算无竞争情况下的生存资料多个标记物在相同时间下的cox及协变量分析AUC值、并可视化多个标记物在相同时间下的ROC值、多指标的ROC曲线
- python3安装cocos2d_(3)在Windows7上搭建Cocos2d-x
- mysql的my.cnf
- iOS中的图像处理(一)——基础滤镜
- ObjectDataSource控件的使用...
- Android界面绘制流程--------How Android Draws Views
- nupkg格式_nupkg文件怎么打开(package程序安装)
- 总结:Oracle 递归查询
- 如何在Mac电脑上更改地区或国家?
- 前端骨架屏方案与实践
- 【链表】leetcode19.删除链表的倒数第N个节点(C/C++/Java/Js)
- 【微信小程序】1、SpringBoot整合WxJava开启消息推送
- 在Outlook 2007中配置自动存档
- 怎么看电脑配置?电脑配置好不好?详细教程来了!
- 2.光栅图形显示技术
- 程序员必读的职业规划书,少走 5 年弯路(送书)
- 基于CC2430的基础实验2-----点阵式LCD驱动
- 如何用C语言实现【猜拳游戏】