Pergunta

Como implementar um painel que apoiaria quebra de linha e quebra de linha? Gostaria apenas de acrescentar rótulos textuais e quebras de linha para este painel. As etiquetas devem fluir da esquerda para a direita, de embrulho para o próximo "linha" se necessário. As quebras de linha poderia causar um salto para a próxima linha. Eu também gostaria de tornar o painel vertical de rolagem.

A solução deve trabalhar em Java 5. SwingX pode ser usado.

Esclarecimento: Os rótulos textuais são realmente JXHyperlinks (de SwingX), isto é, o painel contém rótulos clicávéis. Esta é a razão pela qual eu não pode apenas usar JTextArea.

Foi útil?

Solução 3

Eu encontrei JTextPane, que eu tinha esquecido antes por algum motivo. Esta classe faz o que eu preciso.

Obrigado por sua ajuda embora. :)

Outras dicas

UPDATE: eu perdi o pedido de apoio hyperlink. Não sei como fazer isso w / o usando o EditorPane.

JTextArea faz exatamente o que você descreveu.

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

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

Este exemplo não é a partir de um painel, que é um recipiente, mas a partir de um JLabel, que se destina a mostrar o conteúdo.

Você pode usar HTML em seu conteúdo e usar um
em cada intervalo. Você deve programaticamente calcular as quebras de acordo com suas regras sobre redimensionamento componente.

Aqui está o 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 );

    }
}

Embora possa não ser uma solução que você está em busca de, mas a partir dos requisitos que você tem, ele parece ser um LayoutManager personalizado pode ser capaz de conseguir o que você está depois. Ao projetar e atribuindo um costume Layout Manager que permite quebras de linha a um Container (como Panel ), deve ser possível ter uma Panel que permite quebras de linha.

O Deitado Out componentes dentro de um Container artigo de Os Java Tutoriais irá fornecer informações gerais sobre como gerenciadores de layout de trabalho em Java, e em particular, a Criando um layout Manager personalizado irá fornecer informações sobre como fazer um costume layout Manager para aplicar a um Container.

O comportamento do FlowLayout (o padrão layout Manager para Panel) parece bastante próximo do comportamento que pode ser depois. Adicionando funcionalidade a quebra de linha parece ser a peça que faltava.

Sugestão:. Talvez o costume Layout Manager pode ter a capacidade de adicionar uma quebra de linha por ter um Component que representa uma quebra de linha, que pode ser adicionado a uma Container usando o método add()

Por exemplo, ter um Component classe constante no costume Layout Manager, tais como (a hipotética) LineBreakLayout.LINE_BREAK, e acrescentando que a Container pode dizer o gerente de layout personalizado para passar para a próxima linha. Talvez uma implementação pode 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"));

O acima hipotética LineBreakLayout, então, tornar o primeiro Label em uma linha ea segunda Label na segunda linha.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top