0

私は Java GUI を作成しています (その側面についてのコメントは控えてください)。List()文字列を表示するために を使用しています。そのリストを特定の幅にして、その制約を超えた場合にテキストを折り返すにはどうすればよいですか? 現在、私のコードは非常に単純です。

List list = new List();
list.add(myString);
contentPane.add(list, BorderLayout.WEST);

myString文字列の になりArrayListます。

少し関連することですが、この GUI を構築するために、私は Google プロジェクトの Eclipse 機能を使用していますが、ほとんどの Java GUI ビルダーと同様に、これを使用するのはかなり困難です。GUIを作成したいだけの作業コードがあります。基本的に、バイナリ ツリーの構築を表示したいと考えています。作業しやすい GUI ビルダーまたはメソッドはありますか? 2 つの別々の質問を提示していることはわかっていますが、必要に応じてこの方法を引き続き使用します。

4

1 に答える 1

2

これを行う最も簡単な方法は、文字列をモデル クラスにカプセル化することです。

モデル クラスを作成する 1 つの方法を次に示します。

public class BreakableString {

    private String  string;

    public BreakableString(String string) {
        this.string = string;
    }

    public String getString() {
        return string;
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        int maxWidth = 80;
        String s = string;

        while (s.length() > maxWidth) {
            String t = getStringPart(s, maxWidth);
            builder.append(t);
            builder.append(System.getProperty("line.separator"));
            s = s.substring(t.length());
        }

        builder.append(s);

        return builder.toString();
    }

    private String getStringPart(String s, int maxWidth) {
        String t = s.substring(0, maxWidth);
        int ePos = t.lastIndexOf(" ");
        if (ePos > 0) {
            return t.substring(0, ePos);
        } else {
            return t;
        }
    }

}

次に、BreakableString の DefaultListModel を作成します。DefaultListModel を使用して JList を構築します。

これが機能しない場合は、JPanel に複数の JTextAreas を作成できます。JPanel を JScrollPane で囲みます。

于 2013-11-14T20:23:56.653 に答える