相关疑难解决方法(0)

获取字体,大小,粗体等等

我在查找访问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);
Run Code Online (Sandbox Code Playgroud)

java fonts swing

10
推荐指数
1
解决办法
6278
查看次数

GraphicsEnvironment#getAvailableFontFamilyNames()之后出现奇怪的字体行为?

我刚刚遇到了Java字体类的一个非常奇怪的行为.

如果我像这样创建一个普通的"Verdana"家族字体,

Font font = new Font("Verdana", Font.PLAIN, 12);
Run Code Online (Sandbox Code Playgroud)

我希望这个字体是一个非粗体字体,引用我系统上安装的普通"Verdana"字体.我使用的是Windows 7,因此相应的字体应该是"Windows/Fonts"文件夹中的"verdana.ttf".

虽然这似乎有效,但实例化的字体会在我调用时改变其行为

GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
Run Code Online (Sandbox Code Playgroud)

在使用字体之前(即在字体内部绑定到任何系统字体之前).在这种情况下,字体似乎在我的系统上引用了"Verdana Bold"字体("verdanab.ttf").

这是一些测试代码,它重现了这个问题:

import java.awt.Font;
import java.awt.GraphicsEnvironment;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class JavaFontBug {

    public static void main(String[] args) {

        boolean enableStrangeBug = false;
        Font font = new Font("Verdana", Font.PLAIN, 12);

        String text;
        if (enableStrangeBug) {
            // this line enables the bug:
            GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
            text = "Some Bold Text?!";
        } else{
            text = "Some Text";
        }

        System.out.println("Font: " + font);
        System.out.println("Font name: " + font.getFontName()); …
Run Code Online (Sandbox Code Playgroud)

java fonts awt

5
推荐指数
1
解决办法
617
查看次数

标签 统计

fonts ×2

java ×2

awt ×1

swing ×1