2 Stimmen

Warum wird mein JTextarea nicht korrekt umgebrochen?

Ich bin wirklich überrascht über meine JTextArea. Nachfolgend JTextArea JAVAdoc Ich habe versucht, ein JTextArea mit einer langen Zeichenkette zu erstellen und wollte, dass meine Zeilen automatisch umgebrochen werden.

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

Tatsächlich geht mein Text aber über den Rahmen hinaus und die Anzahl der Zeichen pro Zeile liegt bei 180. Vielleicht habe ich etwas nicht verstanden oder das Problem liegt in der Layout-Verwaltung. Aber um die Layout-Komplikation zu vermeiden, reduziere ich es auf eine grundlegende Frame>Panel>Textarea.

Bitte beachten Sie, dass Englisch nicht meine Muttersprache ist.

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();
    }
}

2voto

george_h Punkte 1492

Das Problem ist, dass Ihr Jtext-Bereich ein Panel mit dem Standard-Layout-Manager ist inisde. Sie müssen etwas anderes verwenden. Schauen Sie sich den geänderten Code unten und sagen Sie mir, wenn es für Sie funktioniert.

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();
}

1voto

Sam Barnum Punkte 10220

Wahrscheinlich müssen Sie Ihre JTextArea in ein JScrollPane einfügen. Wenn Ihr JTextArea lose in einem übergeordneten Container liegt, bestimmt der Layout-Manager für den übergeordneten Container die Größe des JTextArea.

Ich bin mir nicht sicher, welche Funktionalität Sie genau suchen, aber der folgende Code füllt den JFrame mit dem JTextArea. Wenn der Rahmen zu klein wird, erscheinen Bildlaufleisten, damit der gesamte Text sichtbar ist.

Ich habe die JTextArea-Konstruktorargumente für Zeilen und Spalten entfernt. Hinweis: Der Parameter "Spalten" bedeutet nicht, wie viele Buchstaben hineinpassen. Ich weiß nicht genau, was eine "Spalte" ist, aber sie scheint breiter zu sein als ein typischer Buchstabe.

Ich habe auch "myPanel" entfernt und füge das JScrollPane direkt in den JFrame ein.

    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);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X