Tem como adicionar um scroll em um JInternalFrame?

4 respostas
V

Bom dia!

Gostaria de saber se tem como adicionar um scroll em um JInternalFrame?

Como?

Estava procurando na internet, mais só explicam como colocar scroll em uma frame normal.

Grata.

4 Respostas

R

Certamente é possível, experimente o seguinte:

  • Ajuste o gerenciador de layout do JInternalFrame para BorderLayout;
  • Insira no JInternalFrame um JScrollPane na posição BorderLayout.CENTER;
  • Insira no JScrollPane um JPanel;
  • Insira seus componentes no JPanel.
V

Eu tentei isso mais naum deu mto certo.

Ele alem de naum aparecer o scroll…

Não aparece tambem meus componentes…

package TelasAdmin;

.
.
.

public class TelaPrincipalAdmin  extends JInternalFrame
{
	private static final long serialVersionUID = 1L;

	private JLabel texto;
	
       . 
       .
       .
	
	public JPanel panel;
	public Administrador admin;
	public JDesktopPane desktop;
	
	
	public TelaPrincipalAdmin(JDesktopPane desktop, Administrador admin) {
		super("Administrador", true , true , true , true);
		this.desktop = desktop;
		this.admin = admin;
	}

	public void iniciar() 
	{
		setLayout(new BorderLayout());			
		
		int inset = 50;
                Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
                setBounds(inset, inset, screenSize.width  - inset * 2, screenSize.height - inset * 2);
               setLocation(0,0);
		

		panel = new JPanel();
		panel.setBackground(new Color(255, 239, 213));
		painel.setLayout(null);
		
		JScrollPane scroll = new JScrollPane();
		/** Adiciona o painel no frame*/
		add(scroll, BorderLayout.CENTER);
		scroll.add(painel);
		setVisible(true);
		desenha();
	}
	
	public void desenha()
	{
		...
		
		painel.add(texto);
		painel.add(btAddCadaver);
		painel.add(btRemoveCadaver);
		painel.add(btLocalizaCadaver);
		painel.add(btAddFuncionario);
		painel.add(btRemoveFuncionario);
		painel.add(btLocalizaFuncionario);
		painel.add(btAddUsuario);
		painel.add(btRemoveUsuario);
		painel.add(btLocalizaUsuario);
		painel.add(btFazerMapa);
		painel.add(btRemoveMapa);
		painel.add(btModificarMapa);
		painel.add(btFinanceiro);
		painel.add(btMudarSenha);
		painel.add(btVoltar);
		
		...
		
		...
	}
}
R

Acho que seus componentes não aparecem porque você não está ajustando a posição/tamanho deles. (Esse ajuste é necessário porque o gerenciador de layout do painel onde você está inserindo os componentes foi ajustado como nulo). Veja a linha abaixo:

Após esta linha, chame setBounds() em :

Outro ponto de atenção: para inserir um componente num JScrollPane não é correto usar add(), a maneira adequada é passar o componente no construtor de JScrollPane ou usar o método setViewportView():

http://java.sun.com/javase/6/docs/api/javax/swing/JScrollPane.html#JScrollPane(java.awt.Component)
http://java.sun.com/javase/6/docs/api/javax/swing/JScrollPane.html#setViewportView(java.awt.Component)

Por fim, para que as barras de rolagem apareçam, é preciso que o tamanho preferencial do componente inserido no JScrollPane esteja ajustado:

V

Obrigada

Deu certo agora!

Agradeço mesmo.

:smiley:

Criado 22 de maio de 2009
Ultima resposta 25 de mai. de 2009
Respostas 4
Participantes 2