Возникли проблемы при изменении шрифта в Java - PullRequest
0 голосов
/ 10 ноября 2019

Я хочу поместить собственный шрифт с помощью метода drawString в мой апплет, проблема в том, что он не меняет шрифт, даже если я делаю это правильно. Я все еще студент, поэтому, пожалуйста, взгляните на мой код. Пожалуйста, помогите мне изменить шрифт. Я обнаружил, что есть определенные шрифты, которые Java может использовать в методе шрифта, пожалуйста, помогите мне.

import javax.swing.*;
import java.awt.*;
public class WoodyWoodPeckerShow extends JApplet {
    private Font font;



    public void init(){
        setFont(new Font("WoodPecker",Font.TRUETYPE_FONT,30));
    }

    public void paint(Graphics g){
        Graphics2D g2 = (Graphics2D)g;

        g2.setFont(font);
        g2.drawString("WoodyWoodPecker",10,200);


    }
}

Это дает мне шрифт по умолчанию вместо этого enter image description here

Пожалуйста, помогите мне. Спасибо вам, ребята. Надеюсь, вы можете помочь мне :)

Ответы [ 3 ]

0 голосов
/ 10 ноября 2019

Вы не установили никаких свойств для своего шрифта , который вы объявили, поэтому у вас есть шрифт с размером и стилем по умолчанию.

 g2.setFont(font);

Вы должны установить все эти вещи илиобъявить новый шрифт как анонимный класс, например:

g2.setFont(new Font("Some", Font.BOLD, 16));
0 голосов
/ 10 ноября 2019

Простой способ заставить вашу программу работать, это изменить init() следующим образом:

public void init(){
    font = new Font("WoodPecker",Font.TRUETYPE_FONT,30);
    setFont(font);
}

ОБНОВЛЕНИЕ:

Более того, я только что понял, что выпередал 2-й параметр неправильно в Font(String name, int style, int size). Пожалуйста, измените метод init () следующим образом, и он должен работать:

public void init(){
    font = new Font("WoodPecker",Font.PLAIN,30);
    setFont(font);
}
0 голосов
/ 10 ноября 2019

Переменная экземпляра font в вашем классе WoodyWoodPeckerShow равна нулю, поскольку вы устанавливаете только значение переменной суперкласса с тем же именем. Вы можете полностью удалить переменную экземпляра и использовать переменную в суперклассе, например:

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

public class WoodyWoodPeckerShow extends JApplet {
    @Override
    public void init() {
        setFont(new Font("WoodPecker", Font.TRUETYPE_FONT, 30));
    }

    @Override
    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;

        g2.setFont(getFont());
        g2.drawString("WoodyWoodPecker", 10, 200);
    }
}
...