【问题标题】: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 编写代码?
  • 这只是一个有人告诉我要做的练习,而不是一个完整的应用程序,只是想学习一些东西

标签: java swing fonts


【解决方案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 会获取您的系统正在运行的字体类型吗?
猜你喜欢
  • 2015-10-17
  • 1970-01-01
  • 2011-09-26
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
  • 2012-07-12
  • 1970-01-01
相关资源
最近更新 更多