文选流氓 发表于 2003-5-11 23:04

1-1-16-4-4 关于superMMX中文显示说明的一点体会

发信人: zshjc (与狼共舞), 信区: Java
标题: 关于superMMX中文显示说明的一点体会
发信站: BBS 水木清华站 (Sat Aug4 13:59:30 2001)

要想显示中文字体,有时并非系统中有这种字体,同时java也支持这种字体就可以显示
.
需要显式地调用GraphicsEnvironment类的getAvailableFontFamilyName方法。
如:String[] fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment().ge
tAvaila
lbeFontFamilyNames();
下面是我编写的一个例子,希望对初学者有点帮助
----------------------------
__________________________________________
/**
*ChineseTest.java
*July 25, 2001
*
*@authorzshjc
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ChineseTest extends JFrame
{
    private JPanel up;
    private JLabel label;
    private JButton btn;
    private Font f1,f2;
    public static void main(String[] args)
    {
       ChineseTest frame = new ChineseTest();
       frame.addWindowListener
       (
         new WindowAdapter()
         {
            public void windowClosing(WindowEvent e)
               {
               System.exit(0);
            }
         }
       );
         frame.show();
    }
    public ChineseTest()
    {
       setTitle("Chinese Test");
         setSize(400, 300);
         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

         setLocation(screenSize.width/2 - 200,screenSize.height/2 - 150);
         GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnviro
nment();
         ge.getAvailableFontFamilyNames();
         getContentPane().setLayout(new BorderLayout());
       up = new JPanel();
         f1 = new Font("STXingkai",Font.PLAIN,20);
         f2 = new Font("FangSong_GB2312",Font.PLAIN,20);
         label = new JLabel("中文测试");
         label.setFont(f1);
         label.setForeground(Color.red);
         up.add(label);
         btn = new JButton("按钮");
         btn.setFont(f2);
         btn.setForeground(Color.blue);
         up.add(btn);
         getContentPane().add(up, BorderLayout.NORTH);
         getContentPane().add(new JPanel()
         {
               public void paintComponent(Graphics g)
         {
             super.paintComponent(g);
          String s = "现在大家满足了吧!!!";
                     Font f=new Font("STXinwei",Font.BOLD,25);
                     FontMetrics fm = g.getFontMetrics(f);
             Dimension d = getSize();
         int cx = (d.width-fm.stringWidth(s)) / 2;
         int cy = (d.height-fm.getHeight()) / 2;
            g.setFont(f);
            g.drawString(s, cx, cy);
         }
         }, BorderLayout.CENTER);
    }
}?

--

※ 来源:·BBS 水木清华站 smth.org·
页: [1]
查看完整版本: 1-1-16-4-4 关于superMMX中文显示说明的一点体会