Java Arial Unicode MS未在Jtree中对齐
我正在写一个JTree,其中我正在对齐英语和unicode混合的文本。 我所看到的是,在使用Arial Unicode MS字体(即Unicode和单间距字体)之后,文本没有对齐,因为单间距文本通常是对齐的 我测试过的一种正确对齐的字体是ConsoleAS,但由于它不是Unicode,所以它没有显示不同语言的字符 这里提到了一个示例代码供参考: 我使用过韩语:-Java Arial Unicode MS未在Jtree中对齐,java,swing,unicode,fonts,jtree,Java,Swing,Unicode,Fonts,Jtree,我正在写一个JTree,其中我正在对齐英语和unicode混合的文本。 我所看到的是,在使用Arial Unicode MS字体(即Unicode和单间距字体)之后,文本没有对齐,因为单间距文本通常是对齐的 我测试过的一种正确对齐的字体是ConsoleAS,但由于它不是Unicode,所以它没有显示不同语言的字符 这里提到了一个示例代码供参考: 我使用过韩语:- package hello; import java.awt.Font; import javax.swing.JFrame; i
package hello;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.tree.DefaultMutableTreeNode;
public class Jtree_Test extends JFrame
{
private static final long serialVersionUID = 1L;
private JTree tree;
public Jtree_Test()
{
//create the root node
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
//create the child nodes
DefaultMutableTreeNode vegetableNode = new DefaultMutableTreeNode("Vegetables test1");
DefaultMutableTreeNode fruitNode = new DefaultMutableTreeNode("test2 " + "안녕하세요, 당신은 어떠세요");
//add the child nodes to the root node
root.add(vegetableNode);
root.add(fruitNode);
//create the tree by passing in the root node
tree = new JTree(root);
tree.setFont(new Font("Arial Unicode MS", Font.PLAIN, 12));
getContentPane().add(tree);
this.setSize(557, 349);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("JTree Example");
this.setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Jtree_Test();
}
});
}
}
JTree中的文本对齐错误,因为Arial Unicode MS字体不是等距字体 见: 关于单间距,没有什么可说的。微软可能只是指微软 只需使用Java中始终存在的单间距逻辑字体, 至少在我的窗户上是可以的:
//create the root node
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
//create the child nodes
DefaultMutableTreeNode vegetableNode = new DefaultMutableTreeNode(
"Vegetables test1");
DefaultMutableTreeNode fruitNode = new DefaultMutableTreeNode(
"test2 " + "안녕하세요, 당신은 어떠세요");
//add the child nodes to the root node
root.add(vegetableNode);
root.add(fruitNode);
//create the tree by passing in the root node
tree = new JTree(root);
tree.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
getContentPane().add(tree);
这是你期望看到的吗?在@AndrewThompson的图像中,这种字体看起来根本不是单间距的,V比t宽得多。在Arial Unicode中可能是MS,MS仅表示Microsoft,而不是单间隔。不,Andrew,这应该正确对齐。我有一张照片,但不知道如何附加在这里。嗨,托马斯,谢谢你的回复。是的,它不像你提到的那样是单间隔的。每个字符的大小都应该相同。我已经从这里的官方网站下载并安装了Arial Unicode MS字体。您好,AndrewThompson,谢谢您的提示。托马斯使用了字体。等距字体。此外,对于空格字符,它们只是为了在左文本和右文本之间创建一个空白,以便于清理。如果文本在这里和那里移动,则看起来不太好,而且右文本和左文本是动态的,这意味着左文本始终是英文的,并且字符数不同,右文本英语或其他语言和字符数各不相同。嗨,托马斯,谢谢你的回答,但请查看我最后的评论:-