Pregunta

¿Cómo implementar un panel que admita el ajuste y el salto de línea? Solo agregaría etiquetas de texto y saltos de línea a este panel. Las etiquetas deben fluir de izquierda a derecha, ajustando a la siguiente & Quot; line & Quot; Si necesario. Los saltos de línea provocarían un salto a la siguiente línea. También me gustaría hacer que el panel se pueda desplazar verticalmente.

La solución debería funcionar en Java 5. Se puede usar SwingX.

Aclaración: las etiquetas de texto son en realidad JXHyperlink s (de SwingX), es decir, el panel contiene etiquetas en las que se puede hacer clic. Esta es la razón por la que no puedo usar JTextArea.

¿Fue útil?

Solución 3

Encontré JTextPane, que había pasado por alto antes por alguna razón. Esta clase hace lo que necesito.

Gracias por tu ayuda. :)

Otros consejos

ACTUALIZACIÓN: Perdí la solicitud de soporte de hipervínculo. No sé cómo hacerlo sin usar el EditorPane.

JTextArea hace exactamente lo que has descrito.

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

texto alternativo http://img187.imageshack.us/img187/3238/wraprn0 .png

Esta muestra no es de un panel, que es un contenedor, sino de un JLabel, que está destinado a mostrar contenido.

Puede usar HTML en su contenido y usar un < br > en cada descanso Usted debe calcular mediante programación los descansos de acuerdo con sus reglas sobre el cambio de tamaño de los componentes.

Aquí está el código:

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

    }
}

Aunque puede que no sea una solución que esté buscando, pero a partir de los requisitos que tiene, parece que un LayoutManager personalizado puede lograr lo que busca. Al diseñar y asignar un Administrador de diseño personalizado que permita saltos de línea a un Container (como Panel ), debería ser posible tener un FlowLayout que permita saltos de línea.

El Distribución de componentes dentro de un contenedor artículo de Los Tutoriales de Java proporcionarán información general sobre cómo funcionan los Gerentes de diseño en Java, y en particular, el Creación de un Administrador de diseño personalizado proporcionará información sobre cómo hacer un Administrador de diseño personalizado para aplicarlo a un Component.

El comportamiento del add() (el Administrador de diseño predeterminado para LineBreakLayout.LINE_BREAK) parece bastante parecido al comportamiento que puede estar buscando. Agregar funcionalidad al salto de línea parece ser la pieza que falta.

Sugerencia: Quizás el Administrador de diseño personalizado puede tener la capacidad de agregar un salto de línea al tener un LineBreakLayout que representa un salto de línea, que se puede agregar a un Label mediante el <=> método.

Por ejemplo, tenga una constante de clase <=> en el Administrador de diseño personalizado, como (un hipotético) <=>, y agregar eso al <=> puede indicarle al administrador de diseño personalizado que pase a la siguiente línea. Quizás una implementación puede ser como:

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

El hipotético <=> anterior representará el primer <=> en una línea y el segundo <=> en la segunda línea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top