我写了一个程序,可以拍摄图片并创建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字体标记来指定文本的字体。
通过在标签的文本中指定HTML代码,可以为标签提供各种特性,如多行、多字体或多种颜色。如果标签只使用单一颜色或字体,则可以使用setForeground或setFont方法来避免HTML处理的开销。
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);
}