我正在尝试为AWT标签定义字体。
虽然我可以设法在Java2D图形环境中使用字体,但相同的字体似乎不适用于AWT标签。我想了解我是否不知道AWT标签的字体使用是否有任何限制,或者我是否只是没有使用正确的语法/过程。
这是我的代码,它基本上在图形上下文中添加了一个Label和文本:
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标签小部件特别相关。
答案 0 :(得分: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);
}
}