Pregunta

Estoy haciendo una aplicación con Java Swing y tengo un problema. He creado un Panel con pestañas, que debe contener un panel simple y un panel de desplazamiento. El panel simple funciona bien, pero en mi panel de desplazamiento solo puedo ver las barras de desplazamiento, pero no la ventana gráfica, mi código es el siguiente:

Panel de contenido

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);
    }
}

Panel de desplazamiento

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();
}

Como no recibo ningún error o excepción, ahora estoy completamente perdido en qué enfoque tomar.

¿Fue útil?

Solución

No debe subclasificar JScrollPane, no es necesario.

Pero si lo hace, no olvide agregar el componente al panel de desplazamiento.

En su subclase no está agregando GraphPanel al panel de desplazamiento .:

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();
    }
}

Prueba:

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

Y haga que GraphPanel extienda JComponent o JPanel

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top