Come impostare JTextArea avere un'altezza che corrisponde alla dimensione di un testo che contiene (per barre di scorrimento Evitare)

StackOverflow https://stackoverflow.com/questions/3081210

Domanda

Questo problema sembra banale, ma non riesco a trovare la soluzione.

Quando creo un modulo contiene un JTextArea. Voglio mettere testo di grandi dimensioni costante in esso. Se il testo è dire 1000 linee lunghe, voglio che il mio sia JTextArea 1000 Alta linee (ad essere abbastanza grande per visualizzare l'intero testo senza barre di scorrimento). JTextArea è all'interno di un pannello che può avere barra di scorrimento, quindi non è un problema quando si diventa troppo grande (ce ne sono due JTextArea in quel pannello .. qualcosa di simile in uno strumento di diff). Qualcuno sa come posso raggiungere questo obiettivo? Grazie.

È stato utile?

Soluzione

Il BorderLayout gestirà la barra di scorrimento fuori dalla scatola, se è sufficiente mettere il vostro JTextAreain un JScrollPane prima di aggiungere al vostro JPanel. FlowLayout, d'altra parte, non lo fa. Esso non visualizzerà la barra di scorrimento a meno che, come intimi @Xorty, si chiama setPreferedSize() sul JScrollPane e dare la dimensione che si desidera.

Altri suggerimenti

Si può anche usare qualcosa di simile (limitata larghezza, altezza a seconda del testo, utile per mostrare messaggi di informazione):

  public JTextArea createTextAreaFitToText(String message, Dimension minimalSize){

        JTextArea aMessagePanel = new JTextArea();
        aMessagePanel.setText(message);

        /*for modelToView to work, the text area has to be sized. It doesn't matter if it's visible or not.*/
        aMessagePanel.setPreferredSize(minimalSize);
        aMessagePanel.setSize(minimalSize);            

        Rectangle r = aMessagePanel.modelToView(aMessagePanel.getDocument().getLength()); 

        Dimension d = new Dimension(minimalSize.width, r.y + r.height);
        aMessagePanel.setPreferredSize(d);
        return aMessagePanel;

}

Per aumentare o diminuire l'altezza della JTextArea. Quando viene inserito un testo, chiamata per getPreferredSize () di JTextArea- ti do la dimensione necessaria per visualizzare l'intero testo. Dopo di che l'uso setPrefferedSize () di JScrollPane per impostare la dimensione della JTextArea

Bene, prima di tutto: è JTextArea non JTextArea

.

Ora - mettere in JTextArea JScrollPane. Quando viene inserito un testo, invito a getPreferedSize() di JScrollPane - ti do dimensione precisa necessaria per visualizzare tutto il testo. Inoltre, non ho mai utilizzare altre LayoutManager di 'Free Design' da NetBeans Altalena builder - quindi non sono sicuro di come altri LayoutManagers si comporterà lì

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