Domanda scrollbar in JTextArea


Come aggiungo le barre di scorrimento a un JTextArea?


44
2018-06-27 09:18


origine


risposte:


Come menziona Fredrik la sua risposta, il modo semplice per raggiungere questo obiettivo è posizionare il JTextArea in un JScrollPane. Ciò consentirà lo scorrimento dell'area di visualizzazione del JTextArea.

Solo per completezza, il seguente è come si potrebbe ottenere:

JTextArea ta = new JTextArea();
JScrollPane sp = new JScrollPane(ta);   // JTextArea is placed in a JScrollPane.

Una volta il JTextArea è incluso nel JScrollPane, il JScrollPane dovrebbe essere aggiunto a dove dovrebbe essere l'area di testo. Nell'esempio seguente, l'area di testo con le barre di scorrimento viene aggiunta a a JFrame:

JFrame f = new JFrame();
f.getContentPane().add(sp);

Grazie kd304 per aver menzionato nei commenti che si dovrebbe aggiungere il JScrollPane al contenitore piuttosto che al JTextArea - Sento che è un errore comune aggiungere l'area di testo stessa al contenitore di destinazione invece del riquadro di scorrimento con area di testo.

I seguenti articoli da Le esercitazioni di Java ha più dettagli:


68
2018-06-27 15:32



Mettilo in un JScrollPane

Modifica: ecco un link per te: http://java.sun.com/docs/books/tutorial/uiswing/components/textarea.html


18
2018-06-27 09:21



Devi prima definire un JTextArea come al solito:

public final JTextArea mainConsole = new JTextArea("");

Quindi metti un JScrollPane su TextArea

JScrollPane scrollPane = new JScrollPane(mainConsole);
scrollPane.setBounds(10,60,780,500);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

L'ultima riga dice che la barra di scorrimento verticale sarà sempre lì. C'è un comando simile per orizzontale. In caso contrario, la barra di scorrimento verrà visualizzata solo quando è necessaria (o mai, se si utilizza _SCROLLBAR_NEVER). Immagino che sia la tua chiamata in che modo vuoi usarla.

Puoi anche aggiungere il wordwrap a JTextArea se vuoi:Guida qui

In bocca al lupo,
Norm M

Post scriptum Assicurati di aggiungere ScrollPane a JPanel e non aggiungere JTextArea.


14
2018-06-27 18:05



            txtarea = new JTextArea(); 
    txtarea.setRows(25);
    txtarea.setColumns(25);
    txtarea.setWrapStyleWord(true);
    JScrollPane scroll = new JScrollPane (txtarea);
    panel2.add(scroll); //Object of Jpanel

Sopra le linee date mostra automaticamente sia barre di scorrimento orizzontali che verticali.


4
2017-12-23 19:39



Volevo solo ringraziare il primo post più importante di un utente che penso si chiami "coobird". Sono nuovo in questo sito Web stackoverflow.com, ma non posso credere quanto sia utile e utile questa community ... quindi grazie a tutti voi per aver postato alcuni ottimi consigli e consigli agli altri. Ecco cos'è una comunità.

Ora coobird ha detto correttamente:

Come Fredrik menziona nella sua risposta, il modo più semplice per ottenere ciò è posizionare JTextArea in un JScrollPane. Ciò consentirà lo scorrimento dell'area di visualizzazione di JTextArea.

Mi piacerebbe dire:

L'affermazione di cui sopra è assolutamente vera. In effetti, avevo lottato con Eclipse in questo modo usando il plug-in WindowBuilder Pro perché non riuscivo a capire quale combinazione di widget mi avrebbe aiutato a farlo. Tuttavia, grazie al post di coobird, sono stato in grado di risolvere questa frustrazione che mi ha richiesto giorni.

Vorrei anche aggiungere che sono relativamente nuovo a Java anche se ho una solida base nei principi. I frammenti di codice e i consigli che doni ai ragazzi qui sono tremendamente utili.

Voglio solo aggiungere un altro tid-bit che possa aiutare gli altri. Ho notato che Coobird inserisce del codice come segue (per mostrare come creare un'area di testo scorrevole). Ha scritto:

JTextArea ta = new JTextArea();
JScrollPane sp = new JScrollPane(ta);   

Vorrei dire grazie allo snippet di codice sopra di coobird. Non l'ho provato direttamente così, ma sono sicuro che funzionerebbe bene. Tuttavia, potrebbe essere utile ad alcuni per farvi sapere che quando l'ho fatto usando lo strumento WindowBuilder Pro, ho ottenuto qualcosa di più simile al seguente (che penso sia solo un modo leggermente più "indiretto" per WindowBuilder per ottenere ciò che vedere le due righe sopra, il mio codice si legge in questo modo:

JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(23, 40, 394, 191);
frame.getContentPane().add(scrollPane);

JTextArea textArea_1 = new JTextArea();
scrollPane.setViewportView(textArea_1);`

Si noti che WindowBuilder fondamentalmente crea un JScrollPane chiamato scrollpane (nelle prime tre righe di codice) ... quindi imposta viewportview dalla seguente riga: scrollPane.setViewportView (textArea_1). Quindi, in sostanza, questa riga sta aggiungendo il textArea_1 nel mio codice (che è ovviamente un JTextArea) da aggiungere al mio JScrollPane ** che è precisamente ciò di cui parlava Coobird).

Spero che questo sia utile perché non volevo che gli sviluppatori di WindowBuilder Pro si confondessero pensando che il consiglio di Coobird non fosse corretto o qualcosa del genere.

I migliori auguri a tutti e felice codifica :)


2
2017-07-01 09:53



Modo semplice per aggiungere JTextArea in JScrollBar con JScrollPan

import javax.swing.*;
public class ScrollingTextArea 
{
     JFrame f;
     JTextArea ta;
     JScrollPane scrolltxt;

     public ScrollingTextArea() 
     {
        // TODO Auto-generated constructor stub

        f=new JFrame();
        f.setLayout(null);
        f.setVisible(true);
        f.setSize(500,500);
        ta=new JTextArea();
        ta.setBounds(5,5,100,200);

        scrolltxt=new JScrollPane(ta);
        scrolltxt.setBounds(3,3,400,400);

         f.add(scrolltxt);

     }

     public static void main(String[] args) 
     {
        new ScrollingTextArea();
     }
}

1
2018-05-02 17:35