3

写真を撮って 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 に変更したところ、はるかにうまく機能しました。唯一の問題は、小さなフォントであっても、フレームが通常画面の外にあることです。しかし、サンプルするピクセル数を変更する方法があります。これにより、出力が小さくなります。

4

1 に答える 1

2

html font タグを使用して、テキストのフォントを指定できます。

ラベルのテキストに HTML コードを指定することで、ラベルに複数の行、複数のフォント、複数の色などのさまざまな特性を与えることができます。ラベルが 1 つの色またはフォントのみを使用している場合は、代わりに 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);

}

于 2012-07-21T01:10:26.747 に答える