Domanda

Come implementare un pannello di supporto della linea di confezionamento e di interruzione di riga?Vorrei solo aggiungere etichette testuali e le interruzioni di riga di questo pannello.Le etichette devono flusso da sinistra a destra, a capo automatico per la successiva "linea" se necessario.Le interruzioni di riga possano causare un salto alla riga successiva.Vorrei anche rendere il pannello in verticale scorrevole.

La soluzione deve funzionare in Java 5.SwingX può essere utilizzato.

Chiarimento:Testuali etichette sono in realtà JXHyperlinks (da SwingX), cioèil pannello contiene cliccabile etichette.Questo è il motivo proprio non posso utilizzare JTextArea.

È stato utile?

Soluzione 3

Ho trovato JTextPane, che avevo trascurato prima per qualche motivo.Questa classe è quello che mi serve.

Grazie per il vostro aiuto però.:)

Altri suggerimenti

AGGIORNAMENTO:Mi è mancata la richiesta di supporto dei collegamenti ipertestuali.Non so come fare w/o utilizzando il EditorPane.

JTextArea fa esattamente quello che hai descritto.

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

il testo alt http://img187.imageshack.us/img187/3238/wraprn0.png

Questo esempio non è da un pannello, che è un contenitore, ma da una JLabel, che è destinato a illustrare il contenuto.

Si potrebbe usare l'HTML, il contenuto e l'uso di un <br> su ogni interruzione. Si dovrebbe a livello di programmazione calcolare le pause in base alle norme sulla componente ridimensionare.

Ecco il codice:

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

    }
}

Anche se potrebbe non essere una soluzione siete alla ricerca di, ma dalle esigenze che si hanno, sembra una custom LayoutManager può essere in grado di ottenere ciò che si sono dopo.Attraverso la progettazione e l'assegnazione di un Gestore di Layout personalizzato che consente interruzioni di riga per un Container (come Panel), dovrebbe essere possibile avere una Panel che permette di interruzioni di riga.

Il Posa dei Componenti all'Interno di un Contenitore articolo Java Tutorial fornirà informazioni di carattere generale su come Layout Manager in Java, in particolare, l' La creazione di un Gestore di Layout Personalizzato fornirà informazioni su come fare un Layout personalizzato Manager per l'applicazione di una Container.

Il comportamento del FlowLayout (il default Layout Manager per Panel sembra abbastanza vicino per il comportamento potrebbe essere dopo.L'aggiunta di funzionalità di interruzione di riga sembra che il pezzo mancante.

Suggerimento: Forse il Gestore di Layout personalizzato può avere la possibilità di aggiungere un'interruzione di riga da avere un Component che rappresenta una interruzione di linea, che può essere aggiunto a un Container utilizzando il add() metodo.

Per esempio, hanno una costante di classe Component il Gestore di Layout personalizzato, come ad esempio (ipotetico) LineBreakLayout.LINE_BREAK, e aggiungendo che per il Container può dire al gestore di layout personalizzato per passare alla riga successiva.Forse una implementazione può essere come:

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

Sopra ipotetico LineBreakLayout sarà poi il rendering del primo Label in una riga e la seconda Label nella seconda riga.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top