gpt4 book ai didi

java - 等宽 Swing 文字

转载 作者:行者123 更新时间:2023-11-30 09:34:59 27 4
gpt4 key购买 nike

我编写了一个程序来拍摄照片并创建 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,效果更好。唯一的问题是即使是很小的字体,框架通常在屏幕之外。但是我有一种方法可以更改要采样的像素数,这会使输出变小。

最佳答案

您可以使用 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);

关于java - 等宽 Swing 文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11588626/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com