Как изменить шрифт AWT Label - PullRequest
       22

Как изменить шрифт AWT Label

1 голос
/ 20 апреля 2019

Я пытаюсь определить шрифт для метки AWT.

Хотя мне удается использовать шрифты для графической среды Java2D, этот же шрифт, похоже, не работает с метками AWT. Я хотел бы понять, есть ли какие-либо ограничения на использование шрифта, которые я не знаю об этом для ярлыков AWT, или я просто не использую правильный синтаксис / процедуру.

это мой код, он добавляет метку и текст к графическому контексту:

package com.company.test;

import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Label;

public class TestTest extends Frame {

    Label myLabel = new Label();
    Font myFont = new Font("Roboto Condensed Light", Font.PLAIN, 12);
    Graphics2D g2d;

    public TestTest() {

        setSize(500,200);
        setLocation(10,10);
        setUndecorated(false);

        myLabel.setBackground(Color.red);
        myLabel.setFont(myFont);
        myLabel.setText("ROBOTO CONDENSED, THIS DOES NOT WORK!");
        add(myLabel, BorderLayout.SOUTH);

        setVisible(true);

    }

    public void paint(Graphics g) {

        g2d = (Graphics2D) g;
        g2d.setStroke(new BasicStroke(0.0f));

        g2d.setFont(myFont);
        g2d.setColor(Color.BLACK);
        g2d.drawString("ROBOTO CONDENSED THIS WORKS!",50, 50);

    }


    public static void main( String[] args ) {

        TestTest window = new TestTest();

    }

}

Это результат:

Font usage

Хотя шрифт правильно определен (так как он используется в элементе «Текст» в компоненте «Графика»), он не применяется к компоненту «Ярлык AWT».

Любой отзыв приветствуется.

Примечание: пожалуйста, не предлагайте использовать SWING или JavaFX, я хорошо знаю, что они являются рекомендуемым способом использования виджетов. Вопрос конкретно относится к виджету AWT Label.

1 Ответ

1 голос
/ 20 апреля 2019

Хорошо, вы должны создать свой собственный ярлык;идея состоит в том, чтобы добраться до графики вещей.Я добавил свой встроенный класс, но вы можете создать правильный класс;затем вы должны передать строку или другие параметры этому классу:

class TestTest extends Frame {

Font myFont = new Font("Rockwell Nova", Font.PLAIN, 12);
Graphics2D g2d;

public TestTest() {

  Label myLabel = new Label() {
    public void paint(Graphics g) {
      g.setFont(myFont);
      g.drawString("ROBOTO CONDENSED, THIS DOES NOT WORK!", 0, 20);
    }
  };
    setSize(500,200);
    setLocation(10,10);
    setUndecorated(false);

    myLabel.setBackground(Color.red);

    add(myLabel, BorderLayout.SOUTH);
    setVisible(true);

}

public void paint(Graphics g) {

    g2d = (Graphics2D) g;
    g2d.setStroke(new BasicStroke(0.0f));

    g2d.setFont(myFont);
    g2d.setColor(Color.BLACK);
    g2d.drawString("ROBOTO CONDENSED THIS WORKS!",50, 50);

}

}
...