JScrollPane na JPanel

6 respostas
thiagomartendal

Pessoal, eu quero colocar ScrollBar no meu JPanel, e que que a ScrollBar apareça quando o tamanho da linha que eu desenho ultrapasse o tamanho do JPanel, mas não estou conseguindo. Alguém pode ajudar?

class Grafico extends JPanel{
        public void Linha(){
            repaint();
            JScrollPane barra = new JScrollPane();
            this.setPreferredSize(new Dimension(500, 500));
            barra.setViewportView(this);
            barra.add(this);
            barra.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);  
            barra.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            this.setAutoscrolls(true);
        }
        
        public void paint(Graphics g){
            g.drawLine(100, 2000, 100, 50);
            g.drawLine(300, 100, 50, 100);
        }
    }

6 Respostas

ViniGodoy

Você deve configurar a propriedade setPreferredSize do seu JPanel.

thiagomartendal

Eu já havia colocado a propriedade, só que ela está na classe que estende um JPanel

class Grafico extends JPanel{  
        public void Linha(){  
            this.setPreferredSize(new Dimension(500, 500));  
        }  
}
ViniGodoy

thiagomartendal:
Eu já havia colocado a propriedade, só que ela está na classe que estende um JPanel

class Grafico extends JPanel{  
        public void Linha(){  
            this.setPreferredSize(new Dimension(500, 500));  
        }  
}

Esse size precisa ter o tamanho total da imagem. No caso, se você tem uma linha com 2000 de altura, esse size precisaria ter pelo menos esses 2000.

thiagomartendal

Ainda nãos está aparecendo as barras de rolagem, eu não sei mais o que tentar.

ViniGodoy

O JScrollPane não deve ser colocado na classe do JPanel, e sim, fora, na janela:

//Crie seu JPanel
Grafico g = new Grafico();

//Coloque-o dentro de um JScrollPane
JScrollPane barras = new JScrollPane(g);

//Coloque o JScrollpane na janela principal
this.add(barras);
thiagomartendal

Obrigado Vini

Criado 19 de maio de 2015
Ultima resposta 20 de mai. de 2015
Respostas 6
Participantes 2