我制作了这个简单的程序,我想在 JTextArea 中显示 unicode 符文字符 \u16e6。该符号显示在 JFrame 的顶部,但不在 JTextArea 中。我已将 JTextArea 的字体设置为与 JFrame 相同,但它仍然仅将 \u16e6 显示为空框。如何在 JTextArea 中显示此字符或任何任意 unicode 字符?
import java.awt.*;
import javax.swing.*;
public class WTextArea{
public static void main(String[] args){
JFrame frame = new JFrame("\u16e6");
frame.setSize(1000,1000);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
System.out.println(frame.getFont().toString());
Container content = frame.getContentPane();
JTextArea jta = new JTextArea();
jta.setFont(frame.getFont());
content.add(jta);
jta.setText("\u16e6");
}
}
我已将 JTextArea 的字体设置为与 JFrame 相同,-
JFrame 的标题栏不是 Swing 组件,它是操作系统小部件。因此操作系统使用的字体与框架的 getFont() 方法中返回的 Font 不同。因此,文本区域的字体不是您认为应该的字体,这就是文本区域无法渲染字符的原因。
我不知道如何确定操作系统框架使用的字体是什么。即使我们可以确定这一点,Swing 也可能无法使用它。
所以你需要找到一种渲染“\u16e6”字符的字体。以下程序是查找此类字体的暴力方法。它显示 Swing 可用的所有字体。因此,我只是一次选择“字体”,直到找到显示您的符号的字体。
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.plaf.basic.*;
public class ComboBoxFonts extends JFrame implements ItemListener
{
JTextArea textArea;
JComboBox comboBox;
public ComboBoxFonts()
{
Font font = new Font("Courier New", Font.PLAIN, 16);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment ();
Font [] fonts = ge.getAllFonts ();
comboBox = new JComboBox( fonts );
comboBox.setFont( font);
comboBox.addItemListener( this );
add( comboBox, BorderLayout.SOUTH );
textArea= new JTextArea("Some text - \u16e6 -", 3, 20);
textArea.setFont( font.deriveFont( 24.0f) );
add( new JScrollPane( textArea ) );
}
public void itemStateChanged(ItemEvent e)
{
Font font = (Font)e.getItem();
textArea.setFont( font.deriveFont( 24.0f ) );
}
public static void main(String[] args)
{
ComboBoxFonts frame = new ComboBoxFonts();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
}
}
在我的 Windows 平台上,唯一的字体似乎是:
//jta.setFont(frame.getFont());
jta.setFont(new Font("Segoe UI Symbol", Font.PLAIN, 18) );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)