如何以不同的字体显示文字?(How to display text in different fonts?)

优质
小牛编辑
126浏览
2023-12-01

问题描述 (Problem Description)

如何以不同的字体显示文字?

解决方案 (Solution)

下面的示例演示如何使用Font类的setFont()方法以不同的字体显示文本。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main 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 Main());
      f.setSize(400,400);
      f.setVisible(true);
   }
}

结果 (Result)

上面的代码示例将产生以下结果。

Different font names are displayed in a frame.

以下是以不同字体显示文本的另一个示例示例

import java.awt.*;
import javax.swing.*;
public class Main extends JComponent {
   String[] dfonts;
   Font[] font;
   static final int IN = 15;
   public Main() {
      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 Main()));
      frame.setSize(350, 650);
      frame.setVisible(true);
   }
}