有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java单空间Swing文本

我写了一个程序,可以拍照并创建ASCII表示(ASCII艺术)。起初,我将ASCII字符串写入控制台,但现在我有了一个保存文本的JLabel。然而,JLabel输出是不规则的,不像控制台输出那样均匀。我尝试使用单间距字体(Droid Sans Mono)作为JLabel中的字体,因为这是我用于控制台输出的字体,但输出仍然不规则。有没有更好的方法在Swing/JLabel中指定单间距字体

以下是我用来创建JLabel的方法:

public JLabel formatLabel(){
    String l = "<html>";
    for(int j = 0; j < height; j+=patchSize){
    for(int k = 0; k < width; k+=patchSize){
        l+=imageArray.get(j).get(k);
    }
    l+="<br>";
    }
    l+="</html>";
    return new JLabel(l);
}

我用来指定字体的那一行:

label.setFont(new Font("Droid Sans Mono", Font.PLAIN, 6));

编辑:我将JLabel改为JTextArea,效果更好。唯一的问题是,即使使用很小的字体,框架通常也在屏幕之外。但我有一种方法,可以改变要采样的像素数,这将使输出更小


共 (1) 个答案

  1. # 1 楼答案

    可以使用html字体标记指定文本的字体

    By specifying HTML code in a label's text, you can give the label various characteristics such as multiple lines, multiple fonts or multiple colors. If the label uses just a single color or font, you can avoid the overhead of HTML processing by using the setForeground or setFont method instead.

    public JLabel formatLabel(){
    String l = "<html><font face=\"verdana\" color=\"green\" size=\"12\">";
    for(int j = 0; j < height; j+=patchSize){
    for(int k = 0; k < width; k+=patchSize){
        l+=imageArray.get(j).get(k);
    }
    l+="<br>";
    }
    l+="</html>";
    return new JLabel(l);
    

    }