获取字体、大小、粗体等

Posted

技术标签:

【中文标题】获取字体、大小、粗体等【英文标题】:Getting fonts, sizes, bold,...etc 【发布时间】:2011-10-21 08:35:02 【问题描述】:

我无法找到有关访问 Windows 字体或预定义字体和大小的信息。因此,对于我的 java 程序,我有一个带有字体、大小和颜色的 JComboBox。问题是我需要预先输入字体、大小和颜色。我如何能够获得预定义的字体、颜色和大小?到目前为止,这就是我所拥有的这种字体,但它的方式不正确。

               if (font.equals("Arial")) 

                if (size.equals("8")) 
                    setSize = 8;
                 else if (size.equals("10")) 
                    setSize = 10;
                 else if (size.equals("12")) 
                    setSize = 12;
                

                if (color.equals("Black")) 
                    setColor = Color.BLACK;
                 else if (color.equals("Blue")) 
                    setColor = Color.BLUE;
                 else if (color.equals("Red")) 
                    setColor = Color.red;
                

                Font font = new Font("Arial", setAttribute, setSize);
                Writer.setFont(font);
                Writer.setForeground(setColor);

【问题讨论】:

“我无法找到有关访问 Windows 字体或预定义字体的内容” 对于 Mac,您将很难找到它。和 *nix 框。如果只针对 Windows,为什么要使用 Java 编写代码? 这只是一个有人告诉我要做的练习,而不是一个完整的应用程序,只是想学习一些东西 【参考方案1】:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fonts = ge.getAvailableFontFamilyNames();

大小和样式可以在运行时设置。

例如

import java.awt.*;
import javax.swing.*;

public class ShowFonts 

    public static void main(String[] args) 
        SwingUtilities.invokeLater(() -> 
            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            String[] fonts = ge.getAvailableFontFamilyNames();
            JComboBox fontChooser = new JComboBox(fonts);
            fontChooser.setRenderer(new FontCellRenderer());
            JOptionPane.showMessageDialog(null, fontChooser);
        );
    


class FontCellRenderer extends DefaultListCellRenderer 

    public Component getListCellRendererComponent(
            JList list,
            Object value,
            int index,
            boolean isSelected,
            boolean cellHasFocus) 
        JLabel label = (JLabel)super.getListCellRendererComponent(
                list,value,index,isSelected,cellHasFocus);
        Font font = new Font(value.toString(), Font.PLAIN, 20);
        label.setFont(font);
        return label;
    

JavaDoc

GraphicsEnvironment.getAvailableFontFamilyNames() 部分状态的 JDoc..

返回一个数组,其中包含此 GraphicsEnvironment 中所有字体系列的名称,该数组已本地化为默认语言环境,由 Locale.getDefault().. 返回。

另见:

getAllFonts()..

【讨论】:

哇,这正是我想要的。那么 GraphicsEnvironment 会获取您的系统正在运行的字体类型吗?

以上是关于获取字体、大小、粗体等的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 UIFont 实例的字体大小或粗体版本

html字体大小、颜色、粗体、下划线代码(局部)

对部分 NSAttributedString 应用粗体,同时保留字体大小和面

更改 matplotlib 中子图的“xticks”和“Yticks”的字体大小和粗体 [重复]

Apache-poi:自动设置合并单元格的大小并使字体变为粗体

如何为 UILabel 设置“粗体”动态字体类型?