Painel com quebra de linha e quebra de linha em Java Swing
-
19-08-2019 - |
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 JXHyperlink
s (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
.
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.