Pergunta

Eu estou fazendo um aplicativo com Java Swing e eu tenho um problema. Fiz um painel com guias, que precisa segurar um painel simples, e um painel de rolagem. O painel simples está funcionando bem, mas na minha rolagem do painel i só pode ver as barras de rolagem, mas não o visor, o meu código é a seguinte:

ContentPane

public class ContentPane extends JTabbedPane {
    private InfoPanel ip;
    ScrollPanel sp;

    public InfoPanel getIp() {
        return ip;
    }

    public ContentPane(GraphPanel gp) {
        this.sp = new ScrollPanel(gp);
        this.sp.setViewportView(gp);

        this.addTab("Graph", this.sp);
        this.ip = new InfoPanel(gp);
        this.addTab("Info", ip);
    }
}

ScrollPanel

public class ScrollPanel extends JScrollPane {
    public ScrollPanel(GraphPanel gp){
        this.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        this.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        this.repaint();
    }
}

GraphPanel

public GraphPanel(StatusBar sb) {
    this.sb = sb;
    zoomLevel = 5;
    sm = new Simulation();
    mh = new MouseHandler(this, sm);
    this.addMouseListener(mh);
    this.setBackground(new Color(240, 165, 98));        
    this.repaint();
}

Desde que eu não receber quaisquer erros ou exceções, agora estou completamente perdido na qual aproach tomar.

Foi útil?

Solução

Você não deve subclasse JScrollPane, não é necessário.

Mas se você fizer isso, não se esqueça de adicionar o componente para o painel de rolagem.

Em sua subclasse você não adicionar o GraphPanel para o painel de rolagem:.

public class ScrollPanel extends JScrollPane {
    public ScrollPanel(GraphPanel gp){

         // ::::  HERE ::: you are not doing anything with gp 
         // like this.setViewPort( gp ) or something like that

        this.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        this.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        this.repaint();
    }
}

Tente:

public class ScrollPanel extends JScrollPane {
    public ScrollPanel(GraphPanel gp){
        super( gp );
        .... etc ...            

E tem GraphPanel estender JComponent ou JPanel

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top