java - 获取字体、大小、粗体等

标签 java swing fonts

我在查找有关访问 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);

最佳答案

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fonts = ge.getAvailableFontFamilyNames();

尺寸和样式可以在运行时设置。

例如

Font Chooser

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;
    }
}

Java文档

GraphicsEnvironment.getAvailableFontFamilyNames() 的 JDoc部分陈述..

Returns an array containing the names of all font families in this GraphicsEnvironment localized for the default locale, as returned by Locale.getDefault()..

See also:

getAllFonts()..

关于java - 获取字体、大小、粗体等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6965038/

相关文章:

java - 编译器说方法未定义......但它是(我认为)

java - 使用JAVA在mysql中动态输出SHOW PROCESSLIST

java - JComponent 未正确绘制

css 不同家庭的不同字体大小

java - 调用 Intent 启动 Activity 时应用程序崩溃

java - 如何在 localhost 上正确使用 dropbox api?

java - GridBagLayout 适用于更高的分辨率,但不适用于更低的分辨率

java - 带预览的自定义对话框

fonts - woff、ttf、svg 和 eot 404ing 的 MIME 类型,尽管已在 IIS 中设置

fonts - 确保 Unicode 数字形式、下标、方框图和几何形状字符的宽度固定