Barra de rolagem(Scroll)

6 respostas
M

Fiz este código mais está escondendo os dados quando insiro mais de 4 pessoas na tela.Alguém pode me ajudar a inserir um scroll e resolver este problema.

Um abraço.
package Telas;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;

import javax.swing.*;

import Negocio.*;

public class TelaListaAluno extends JFrame {
	private JPanel textPanel, p1;
	private Container c;
	private JTextArea lbl;

	public TelaListaAluno(String titulo) {
		super(titulo);
		c = getContentPane();
		c.setLayout(new BorderLayout());
		
		//Campos do formulário
		textPanel = new JPanel();
		textPanel.setLayout(new GridLayout(2, 1));

		p1 = new JPanel();
		p1.setLayout(new FlowLayout(0));
		lbl = new JTextArea();
		Vector alunoColection = GerenciadorAluno.recuperaAlunos();
		Iterator listaAluno = alunoColection.iterator();
		String aux="";
        while(listaAluno.hasNext()){
        	AlunoBean aluno = (AlunoBean) listaAluno.next();
        	aux+=("Matricula: " + aluno.getMatricula()+ 
        		  "\nNome: " + aluno.getNome()+
        		  "\n\n------------------------\n\n");
        }
        lbl.setText(aux);
		p1.add(lbl);
		textPanel.add(p1);
		
		c.add(textPanel, BorderLayout.CENTER);

		pack();
		setVisible(true);
	}
	
}

6 Respostas

F
p1.add(new JScrollPane(lbl));

Tem que adicionar o teu JTextArea num JScrollPane, dai sim adicionar no JPanel

M

Como?Desculpe a minha ignorância.

F

Substitui a linha 39 do teu exemplo para a linha que postei anteriormente

M

Cara eu coloquei mas não aconteceu nada.

Quando insiro mais de 4 alunos no banco e mando listar só aparecem 4 os outros ficam no banco mas ficam ocultos.Acho que o scroll que eu achei que resolveria não está resolvendo.

F

Cara, tem uma certa confusão nessa tua tela!
Pq tu está criando esse JPanel?

p1 = new JPanel();

Ao invés, coloque diretamente o JTextArea no outro JPanel!
Comentei algumas coisas… e ficou assim:

// p1 = new JPanel();
// p1.setLayout(new FlowLayout(0));
lbl = new JTextArea();
// p1.add(new JScrollPane(lbl));
textPanel.add(new JScrollPane(lbl));

Outra dica, não misture a criação da tela com código que vai popular ela.
Tu está montando o teu layout e no meio tu faz uma consulta ao banco para popular ela.
Deixa isso para o final.

D

E outra:

Utilize ArrayList invés de Vector quando não for necessário utilizar concorrência (threads).

Vector é o mesmo de ArrayList, só que sincronizado, e por isso, mais lento.

Criado 29 de maio de 2008
Ultima resposta 4 de jun. de 2008
Respostas 6
Participantes 3