JScrollPane & JTextArea

6 respostas
Grinvon

Olá pessoal!

Eu tou com uma dúvida sobre esses dois componentes, eu no caso criei no frame um JTextArea, e criei também um JScrollPane, porém não consegui acoplar o JScrollPane no JTextArea, mesmo setando assim:

JScrollPane barra = new JScrollPane(Area);

esse Area é o objeto do JTextArea.

Como devo fazer para por então uma barra de rolagem em um JTextArea?

6 Respostas

R

O scroller só aparece se a textArea estiver cheio

JTextArea textArea =new JText Area();
container.add(new JScrollPane(textArea);
C

Tente isso:

import javax.swing.*;

public class ScrollFrame
{
	public static void main( String args[] )
	{
		String strTexto = "";
		
		for ( int intI = 0; intI < 20; intI++ )
			strTexto += "\nScrollPane";
		
		JTextArea textArea = new JTextArea( 12, 22 );
		textArea.setText( strTexto );
		
		JScrollPane scrollPane = new JScrollPane( textArea );
		
		JFrame frame = new JFrame("Teste barra");
		frame.getContentPane().add( scrollPane );
		frame.setVisible( true );
		frame.pack();
		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	}
}

Não sei se é bem isso que você estava querendo, mas espero ter ajudado.

Grinvon

Tentei assim, mas não funcionou a parte do scroll.

/* Servidor
 *by Grinvon
 *started 23:01 28/09/2003
 */
 
 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;
 
 public class Servidor extends JFrame {
 	
 	//componentes
 	JButton botao;
 	JLabel rotulo;
 	JTextArea area;
 	JTextField msg;
 	JScrollPane barra;
 	JPanel painel;
 	
 	public Servidor()
 	{
 		//construtor
 		
 		mostrarJanela();
 	}//fim do construtor
 	
 	void iniciarServer() 
 	{
 		//SERVER CODE
 	}
 	
 	void mostrarJanela() 
 	{
		painel = new JPanel();
		painel = (JPanel) this.getContentPane();
		painel.setLayout(null);
		this.setSize(new Dimension(500,330));
		this.setTitle("Servidor Chat");
		this.setResizable(true);
		
		//Componentes gráficas
		
		area = new JTextArea();
		barra = new JScrollPane(area);
		botao = new JButton("Enviar");
		msg = new JTextField("");
		rotulo = new JLabel(
			"Digite o seu texto na caixa menor, e clique em enviar");
		 
		rotulo.setBounds(new Rectangle(5,4,330,25));
		
		area.setEditable(true);
		area.setText("");
		area.setBounds(new Rectangle(20,50,400,130));
		area.setBorder(BorderFactory.createLineBorder(Color.black));
		
		botao.setBounds(new Rectangle(250,150,100,25));
		botao.setToolTipText("clique aqui para enviar uma msg");
		msg.setBounds(new Rectangle(5,150,220,25));
		
		//adiciona os componentes no painel
		
		painel.add(barra);
		painel.add(botao);
		painel.add(msg);
		painel.add(rotulo);
		painel.add(area);
		
		//mostra o resultado final da GUI
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.pack();
		this.setVisible(true);
		
	}
	
	public static void main(String args[])
	{
		
		//Servidor serv = new Servidor();
		
		//serv.Servidor;
		new Servidor();
	}//fim do método principal
	
}
[/code]
luiz_ross

Pra colocar barra de rolagem no scrollpane é só adicionar essa linha

Grinvon

Não funcionou.

[code]
meuscrollpanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AWAYS);

HeitorMiranda
Grinvon:
Olá pessoal!

Eu tou com uma dúvida sobre esses dois componentes, eu no caso criei no frame um JTextArea, e criei também um JScrollPane, porém não consegui acoplar o JScrollPane no JTextArea, mesmo setando assim:

JScrollPane barra = new JScrollPane(Area);

esse Area é o objeto do JTextArea.

Como devo fazer para por então uma barra de rolagem em um JTextArea?

Voce esta declarando como se fosse do pacote javax.swing.JTextArea;
import javax.swing.JTextArea;
JTextArea area = new JTextArea(5,5);
Tente utilizar o TextArea do pacote java.awt.TextArea;
import java.awt.TextArea;

TextArea area = new TextArea();
Que já tem as barras embutidas e não prescisa criar o JScrollPane.
Criado 28 de setembro de 2003
Ultima resposta 19 de jun. de 2008
Respostas 6
Participantes 5