2

JTextArea には本当に驚きました。JTextArea JAVAdocに従って、長い文字列の JTextArea を作成しようとしましたが、行を自動的に折り返す必要がありました。

JTextArea text = new JTextArea(myLongString,10,100);
text.setLineWrap(true);
text.setWrapStyleWord(true);
myContainer.add(text);

しかし、実際にはテキストがフレームからはみ出し、1行あたりの文字数は約180です。何かを理解していないか、レイアウト管理に問題があるのか​​もしれません。しかし、レイアウトの複雑さを避けるために、基本的なフレーム>パネル>テキストエリアに減らします。

英語は私の母国語ではないことに注意してください。

public class myTest extends JFrame
{

    public myTest()
    {
        JPanel simplePanel = new JPanel();
        String alongString = "Accusata consulatu vix ad, eruditi albucius liberavisse est no. Platonem reprehendunt qui ea. Dicta recteque referrentur an his, id facete maiorum vulputate vim. At suas oratio mnesarchum quo. Quidam omnium necessitatibus ex sea, vix soleat quaerendum conclusionemque ut, case malorum nam an.No quis suas discere nam, nam ex nostro fastidii vivendum. Sed cu nobis ullamcorper. Has at doctus ponderum honestatis. In facer dicam corpora vis.";
        JTextArea myText = new JTextArea(alongString,10,100 );

        this.setSize(800, 600);

        myText.setLineWrap(true);
        myText.setWrapStyleWord(true);

        simplePanel.add(myText);
        this.add(simplePanel);
        this.validate();
        this.setVisible(true);

    }

    public static void main(String[] args)
    {
        new myTest();
    }
}
4

2 に答える 2

2

問題は、jtext領域がデフォルトのレイアウトマネージャーを備えたパネルに含まれていないことです。あなたはそれを何か他のものに変える必要があります。以下の変更されたコードをチェックして、それがあなたのために働くかどうか教えてください。

public MyTest()
{


    String alongString = "Accusata consulatu vix ad, eruditi albucius liberavisse est no. Platonem reprehendunt qui ea. Dicta recteque referrentur an his, id facete maiorum vulputate vim. At suas oratio mnesarchum quo. Quidam omnium necessitatibus ex sea, vix soleat quaerendum conclusionemque ut, case malorum nam an.No quis suas discere nam, nam ex nostro fastidii vivendum. Sed cu nobis ullamcorper. Has at doctus ponderum honestatis. In facer dicam corpora vis.";
    JTextArea myText = new JTextArea(alongString,10,100 );

    myText.setLineWrap(true);
    myText.setWrapStyleWord(true);

    JPanel simplePanel = new JPanel(new BorderLayout(5, 5));
    simplePanel.add(myText, BorderLayout.CENTER);

    this.add(simplePanel);
    this.validate();
    this.setSize(800, 600);
    this.setVisible(true);

}

public static final void main(String ... args) {
    new MyTest();
}
于 2012-06-08T14:56:59.580 に答える
1

おそらく、JTextArea を JScrollPane に配置する必要があります。JTextArea が親コンテナー内で緩んでいる場合、親コンテナーのレイアウト マネージャーが JTextArea のサイズを決定します。

探している機能が正確にはわかりませんが、次のコードは JFrame を JTextArea で埋めます。フレームが小さすぎると、スクロール バーが表示され、すべてのテキストが表示されます。

行と列の JTextArea コンストラクター引数を削除しました。注: "columns" パラメータは、何文字が横に収まるかという意味ではありません。「列」が何なのか正確にはわかりませんが、一般的な文字よりも幅が広いようです。

「myPanel」も削除し、JScrollPane を JFrame に直接追加しています。

    String alongString = "Accusata consulatu vix ad, eruditi albucius liberavisse est no. Platonem reprehendunt qui ea. Dicta recteque referrentur an his, id facete maiorum vulputate vim. At suas oratio mnesarchum quo. Quidam omnium necessitatibus ex sea, vix soleat quaerendum conclusionemque ut, case malorum nam an.No quis suas discere nam, nam ex nostro fastidii vivendum. Sed cu nobis ullamcorper. Has at doctus ponderum honestatis. In facer dicam corpora vis.";
    JTextArea myText = new JTextArea(alongString);
    JScrollPane scrollPane = new JScrollPane(myText);

    this.setSize(800, 600);

    myText.setLineWrap(true);
    myText.setWrapStyleWord(true);

    this.add(scrollPane);
    this.validate();
    this.setVisible(true);
于 2012-06-08T14:29:49.660 に答える