Frage

Wie ein Panel implementieren, die Zeilenumbrüche und Zeilenumbruch unterstützen würde? Ich würde nur Textetiketten und Zeilenumbrüche zu diesem Panel hinzuzufügen. Die Etiketten sollten von links nach rechts fließen, auf die nächste „Linie“ Einwickeln wenn erforderlich. Die Zeilenumbrüche würden einen Sprung in der nächsten Zeile führen. Ich möchte auch die Platte vertikal scrollable machen.

Die Lösung sollte in Java arbeiten 5. SwingX verwendet werden kann.

Zur Verdeutlichung: Die Textetiketten sind eigentlich JXHyperlinks (von SwingX), das heißt, die Platte enthält anklickbare Etiketten. Dies ist der Grund kann ich nicht nur verwenden JTextArea.

War es hilfreich?

Lösung 3

Ich fand JTextPane, die ich aus irgendeinem Grund vor übersehen hatte. Diese Klasse tut, was ich brauche.

Danke für Ihre Hilfe though. :)

Andere Tipps

UPDATE: Ich habe den Antrag auf Hyperlink-Unterstützung verpasst. Sie wissen nicht, wie das zu tun w / o die EditorPane verwenden.

JTextArea tut genau das, was Sie beschrieben haben.

JTextArea textArea = new JTextArea();
JScrollPanel sPane = new JScrollPane(textArea);

alt text http://img187.imageshack.us/img187/3238/wraprn0 .png

Dieses Beispiel ist nicht aus einem Panel, dass ein Behälter ist, aber von einem JLabel, ist, dass beabsichtigt Inhalt zu zeigen.

Sie können HTML-Code in Ihre Inhalte verwenden und eine
auf jeder Pause verwenden. Auf Sie programmatisch die Pausen nach mit Regeln für die Komponente Resize berechnen soll.

Hier ist der Code:

import javax.swing.*;
import java.awt.*;

public class Wrap {


    public static void main( String [] args ) { 

        JFrame frame = new JFrame("Wrap test");

        String text =  "<html>This<br>is<br>a<br>multiline<br>label</html>";


        frame.add( new JLabel( text ) );

        frame.pack();

        frame.setVisible( true );

    }
}

Auch wenn es keine Lösung sein kann Sie auf der Suche sind von, sondern von den Anforderungen, die Sie haben, scheint es wie eine benutzerdefinierte LayoutManager in der Lage sein zu erreichen, was Sie nach. Durch die Gestaltung und einen benutzerdefinierten Layout Manager zuweisen, die Linie ermöglicht bricht zu einem Panel ), sollte es möglich sein, ein Panel zu haben, die Zeilenumbrüche erlaubt.

Die Ausbreiten Komponenten innerhalb eines Containers Artikel von Die Java-Tutorials allgemeine Informationen darüber, wie Layoutmanager Arbeit bieten wird in Java, und insbesondere die eines benutzerdefinierten Layout Manager Erstellen von werden Informationen darüber, wie Sie einen benutzerdefinierten Layout-Manager, um zu einem Container anzuwenden.

Das Verhalten der FlowLayout (der Standard-Layout-Manager für Panel) scheint ziemlich nah an das Verhalten, das Sie nachher sein kann. Hinzufügen von Funktionalität zu Zeilenumbruch scheint, wie das fehlende Stück.

. Vorschlag: Vielleicht ist der benutzerdefinierte Layout Manager kann die Fähigkeit hat, einen Zeilenumbruch hinzufügen, indem Sie einen Component, die einen Zeilenumbruch darstellt, die unter Verwendung des Container Verfahrens zu einem add() hinzugefügt werden kann

Zum Beispiel hat eine Klasse Konstante Component im benutzerdefinierten Layout-Manager, wie (hypothetischen) LineBreakLayout.LINE_BREAK, und fügte hinzu, dass zum Container des Manager benutzerdefinierten Layouts kann sagen, in der nächsten Zeile zu bewegen. Vielleicht kann eine Implementierung wie:

Panel p = new Panel(new LineBreakLayout());
p.add(new Label("First Line"));
p.add(LineBreakLayout.LINE_BREAK);
p.add(new Label("Second Line"));

Die oben hypothetische LineBreakLayout wird den ersten Label in einer Zeile und den zweiten Label in der zweiten Zeile dann machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top