如何更改 AWT 标签字体

Posted

技术标签:

【中文标题】如何更改 AWT 标签字体【英文标题】:How to change AWT Label Font 【发布时间】:2019-09-10 08:38:13 【问题描述】:

我正在尝试为 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();

    


这是结果:

虽然正确定义了字体(因为它在 Graphics 组件的 Text 元素中使用),但它并未应用于 AWT Label 组件。

欢迎任何提示。

注意:请不要建议使用 SWING 或 JavaFX,我很清楚它们是使用小部件的推荐方式。问题与 AWT Label 小部件特别相关。

【问题讨论】:

【参考方案1】:

好的,您必须创建自己的标签;这个想法是得到事物的图形。我已经添加了我的内联类,但你可以创建一个合适的类;那么您必须将字符串或其他参数传递给该类:

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




【讨论】:

感谢您的提示。虽然必须创建自己的组件有点令人沮丧,那么 .setFont 方法用于什么? 我明白了,我同意

以上是关于如何更改 AWT 标签字体的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 Xcode 中的系统字体大小更改标签的字体大小?

如何更改 Matplotlib 中颜色条刻度标签的字体大小?

如何更改标签栏控制器项目名称的字体大小?

Xamarin.iOS - 如何动态更改标签字体大小?

快速更改标签栏标题字体

ReactJS:如何在 Material UI 中更改步进标签的字体大小和 marginTop?