在JTextPane中设置字体宽度

时间:2012-09-06 11:48:49

标签: java swing

我正在尝试在JTextPane中设置字体宽度,但不知怎的,我没有找到如何做到这一点。

以下是我已有的代码:

Font resultFont = new Font("Courier", Font.PLAIN, 12);

JTextPane resultPane = new JTextPane();
resultPane.setText(result);
resultPane.setFont(resultFont);
resultPane.setEditable(false);

add(resultPane);

如果有可能拉伸字体会非常酷,因为我想显示一些ASCII-Art。

2 个答案:

答案 0 :(得分:5)

您想要实际拉伸字符还是仅调整“字距调整”(字符间的空格)。 如果它只是字距调整:你可以找到解决方案here

答案 1 :(得分:1)

我认为您正在寻找等宽字体:SWT - OS agnostic way to get monospaced font

这是一个例子:

import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;

public class TestProject extends JPanel{

    public TestProject(){
        super();

       JTextPane ta = new JTextPane();

       //If you want to adjust your line spacing too
       MutableAttributeSet set = new SimpleAttributeSet();
       StyleConstants.setLineSpacing(set, -.2f);
       ta.setParagraphAttributes(set, false);

       //Making font monospaced
       ta.setFont(new Font("Monospaced", Font.PLAIN, 20));

       //Apply your ascii art
       ta.setText(" .-.\n(o o) boo!\n| O \\\n \\   \\\n  `~~~'");

       //Add to panel
        add(ta, BorderLayout.CENTER);

    }

    public static void main(String args[])
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                frame.setContentPane(new TestProject());    
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}