4

この形式でJLabelテキストを表示する必要があります。

Hoffenheim  1 : 0  Koeln
    Bayern  2 : 1  HSV

私はこれを成し遂げることができません。私はString.format()運がなくて試しました。何かアドバイス?

4

3 に答える 3

7

HTMLを使用できます。詳細については、SwingコンポーネントでHTMLを使用する方法をお読みください。たとえば、次のようなテーブルを作成できます。

import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class StringDemo {

    public static void main(String arg[]){

        StringBuilder buff = new StringBuilder();
        buff.append("<html><table>");
        buff.append(String.format("<tr><td align='right'>%s</td><td>:</td><td>%s</td></tr>", "Hoffenheim  1", "0  Koeln"));
        buff.append(String.format("<tr><td align='right'>%s</td><td>:</td><td>%s</td></tr>", "Bayern  2", "1  HSV"));
        buff.append("</table></html>");

        JOptionPane.showMessageDialog(null, new JLabel(buff.toString()));
    }
}
于 2012-07-17T23:20:31.730 に答える
4

String.format()文字列を別の方法で表示するのではなく、特別にフォーマットされた文字列にコンテンツを挿入するために使用されます。ただし、JLabelsおよびその他のSwingコンポーネントはHTMLを許可しますが、必要なものが得られる場合があります。

new JLabel("<html><pre>         Hoffenheim  1 : 0  Koeln</pre></html>");
new JLabel("<html><pre>             Bayern  2 : 1  HSV</pre></html>");

とは言うものの、あなたが求めているのは、テキストをそれらのコロンの周りに集中させることであり、単にそれらを端から一定の数のスペースだけ離すことではないようです。それは少し難しいでしょうが、それでも可能です。これを行うには、実際にすべてをいくつかのラベルに分割し、それらをグリッドに配置する必要があります(MigLayoutはこのようなものに非常に適していると思います)。

6つのJLabelを作成し、必要に応じて左、右、または中央に揃えてから、次のようにグリッドにドロップします。

| Hoffenheim  1 | : | 0  Koeln |
|     Bayern  2 | : | 1  HSV   |

明らかに、境界線などを無効にして、適切にフォーマットされたテキスト以外のものとしてユーザーに表示されないようにすることができます。

于 2012-07-17T23:09:15.187 に答える
2

dimo414の回答から拡張して、実際にHTMLテーブルを使用できます

StringBuilder sb = new StringBuilder(128);

sb.append("<html>");
sb.append("<table border='0'>");
sb.append("<tr>");
sb.append("<td align='right'>Hoffenheim</td>");
sb.append("<td align='center'>1</td>");
sb.append("<td align='center'>:</td>");
sb.append("<td align='center'>0</td>");
sb.append("<td align='left'>Koeln</td>");
sb.append("</tr>");
sb.append("<tr>");
sb.append("<td align='right'>Bayern</td>");
sb.append("<td align='center'>2</td>");
sb.append("<td align='center'>:</td>");
sb.append("<td align='center'>1</td>");
sb.append("<td align='left'>HSV</td>");
sb.append("</tr>");
sb.append("</table>");
sb.append("</html>");

label.setText(sb.toString());

これははるかに複雑ですが、フォーマットの柔軟性が高くなります。

于 2012-07-17T23:17:07.073 に答える