在Java的GUI编程中,如何显示不同字体的文字?
以下示例演示如何使用Font
类的setFont()
方法显示不同字体的文本。
package com.yiibai;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DisplayTextFont extends JPanel {
String[] type = { "Serif", "SansSerif" };
int[] styles = { Font.PLAIN, Font.ITALIC, Font.BOLD, Font.ITALIC + Font.BOLD };
String[] stylenames = { "Plain", "Italic", "Bold", "Bold & Italic" };
public void paint(Graphics g) {
for (int f = 0; f < type.length; f++) {
for (int s = 0; s < styles.length; s++) {
Font font = new Font(type[f], styles[s], 18);
g.setFont(font);
String name = type[f] + " " + stylenames[s];
g.drawString(name, 20, (f * 4 + s + 1) * 20);
}
}
}
public static void main(String[] a) {
JFrame f = new JFrame();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.setContentPane(new DisplayTextFont());
f.setSize(400, 400);
f.setVisible(true);
}
}
上述代码示例将产生以下结果。
示例-2
以下是以不同字体显示文本的另一示例:
package com.yiibai;
import java.awt.*;
import javax.swing.*;
public class DisplayTextFont2 extends JComponent {
String[] dfonts;
Font[] font;
static final int IN = 15;
public DisplayTextFont2() {
dfonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
font = new Font[dfonts.length];
}
public void paintComponent(Graphics g) {
for (int j = 0; j < dfonts.length; j += 1) {
if (font[j] == null) {
font[j] = new Font(dfonts[j], Font.PLAIN, 16);
}
g.setFont(font[j]);
int p = 15;
int q = 15 + (IN * j);
g.drawString(dfonts[j], p, q);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Different Fonts");
frame.getContentPane().add(new JScrollPane(new DisplayTextFont2()));
frame.setSize(350, 650);
frame.setVisible(true);
}
}
上述代码示例将产生以下结果。