Urgente plzz, necesito ayuda para poner un Scroll a un panel

deadlykyo
11 de Junio del 2004
estoy realizando un simulador de trafico, pero el mapa que estoy trabajando es bastante grande 2000 x 2000 y el lio que tengo es que no puedo ponerle un -JScrollPane, no se si alguien me puede ayudar con esto por favor, es para un trabajo que tengo que presentar, aqui les mando el codigo de la clase mas:

import javax.swing.*;
import java.awt.*;

public class Mapa extends JPanel
{
int veces=0,esquina=0;
int x_Casa=0,y_Casa=0,x_Cuadra=0,y_Cuadra=0;
String Casa_Dir="";
int Tam_x=1000,Tam_y=800;
int tam_casa=180;


ImageIcon Casa_Img=new ImageIcon(Casa_Dir);
JLabel Casa_Eti=new JLabel(Casa_Img);
Dato_Mapa d;
Dato_Calle[][] Calle_H,Calle_V;
JPanel[][] Casa=new JPanel[7][7];
Avenida[][] avenida_V=new Avenida[5][6];
Avenida[][] avenida_H=new Avenida[5][6];
public Mapa()
{
setLayout(null);
setBackground(Color.BLACK);
d=new Dato_Mapa();
Calle_H=d.getCalle_H();
Calle_V=d.getCalle_V();
Llenar();
//Casa[0][0].setLocation(0,0);
//avenida_H[4][4].setLocation(200,0);
//avenida_V[0][0].setLocation(0,200);
//posicionar();
Localizar(0,0,0,0,0,0);
setSize(Tam_x,Tam_y);
iniciar();
show();
}
public void iniciar()
{
int var=400;
for(int i=0;i<5;i++)
{
avenida_V[i][0].iniciar(var);//inicia la ejecucucion del semaforo
avenida_H[i][0].iniciar(var);//inicia la ejecucucion del semaforo
var-=8;
avenida_V[i][1].iniciar(var);//inicia la ejecucucion del semaforo
avenida_H[i][1].iniciar(var);//inicia la ejecucucion del semaforo
var-=8;
avenida_V[i][2].iniciar(var);//inicia la ejecucucion del semaforo
avenida_H[i][2].iniciar(var);//inicia la ejecucucion del semaforo
var-=8;
avenida_V[i][3].iniciar(var);//inicia la ejecucucion del semaforo
avenida_H[i][3].iniciar(var);//inicia la ejecucucion del semaforo
var-=8;
avenida_V[i][4].iniciar(var);//inicia la ejecucucion del semaforo
avenida_H[i][4].iniciar(var);//inicia la ejecucucion del semaforo
var-=8;
avenida_V[i][5].iniciar(var);//inicia la ejecucucion del semaforo
avenida_H[i][5].iniciar(var);//inicia la ejecucucion del semaforo
var-=8;

}
}
public void Llenar()
{
for(int i=0;i<6;i++)
{for(int j=0;j<6;j++)
{
if(i!=5)
{

//add(Casa[i][j]);
if(i==0||j==0)
{avenida_H[i][j]=new Avenida(Calle_H[i][j],0,tam_casa);
avenida_V[i][j]=new Avenida(Calle_V[i][j],1,tam_casa);
//add(avenida_H[i][j]);
//add(avenida_V[i][j]);

}
else
{if(j%2==0)
{avenida_H[i][j]=new Avenida(Calle_H[i][j],1,tam_casa);
avenida_V[i][j]=new Avenida(Calle_V[i][j],1,tam_casa);
//add(avenida_H[i][j]);
//add(avenida_V[i][j]);
}
else
{if(j==1)
{if(i%2==0)
{avenida_V[i][j]=new Avenida(Calle_V[i][j],1,tam_casa);
//add(avenida_V[i][j]);
}else{
avenida_V[i][j]=new Avenida(Calle_V[i][j],0,tam_casa);
//add(avenida_V[i][j]);
}
avenida_H[i][j]=new Avenida(Calle_H[i][j],0,tam_casa);
//add(avenida_H[i][j]);

}else
{avenida_H[i][j]=new Avenida(Calle_H[i][j],0,tam_casa);
avenida_V[i][j]=new Avenida(Calle_V[i][j],0,tam_casa);
//add(avenida_H[i][j]);
//add(avenida_V[i][j]);
}
}
}
}
Casa[i][j]=new JPanel();
//Casa[i][j].setBackground(Color.BLACK);
Casa[i][j].setSize(tam_casa,tam_casa);
Casa[i][j].add(Casa_Eti=new JLabel(Casa_Img));
}
System.out.println("sale bien");
}
System.out.println("sale Normal");
}
public void posicionar()
{
Localizar(0,0,0,0,0,0);
}
public void Localizar(int i,int j,int valor_x,int valor_y,int pos_h,int pos_v)
{//dara posicion a todos los elementos del mapa, calles , semaforos ,casas
veces++;
System.out.println("entra a localizar");
System.out.println("el munero que entra es"+veces);
if(i<5)
{
if(i==j)
{
esquina++;
System.out.println("entra esquina"+esquina);
add(Casa[i][j]);//
Casa[i][j].setLocation(valor_x,valor_y);

pos_h+=tam_casa;
pos_v+=tam_casa;

add(avenida_V[i][j]);//
avenida_V[i][j].setLocation(pos_v,valor_y);
//avenida_V[i][j].iniciar();//inicia la ejecucucion del semaforo
pos_v+=avenida_V[i][j].getTam_x();

add(avenida_H[j][i]);//
avenida_H[j][i].setLocation(valor_x,pos_h);
//avenida_H[j][i].iniciar();//inicia la ejecucucion del semaforo
pos_h+=avenida_H[j][i].getTam_y();

Localizar(i,j+1,valor_x,valor_y,pos_h,pos_v);
return ;
}
if(j==5)
{
//La calle vertical que esta avanzando abajo
add(Casa[j][i]);//
Casa[j][i].setLocation(valor_x,pos_v);

add(avenida_V[i][j]);//
avenida_V[i][j].setLocation(valor_x+tam_casa,pos_v);
//avenida_V[i][j].iniciar();//inicia la ejecucucion del semaforo
valor_x+=tam_casa+avenida_V[i][j].getTam();

//La calle horizontal que esta avanzando derecha
add(Casa[i][j]);//
Casa[i][j].setLocation(pos_h,valor_y);

add(avenida_H[i][j]);//
avenida_H[i][j].setLocation(pos_h,valor_y+tam_casa);
//avenida_H[i][j].iniciar();//inicia la ejecucucion del semaforo
valor_y+=tam_casa+avenida_H[i][j].getTam();
Localizar(i+1,i+1,valor_x,valor_y,valor_x,valor_y);
return ;
}

//La calle vertical que esta avanzando abajo
add(Casa[j][i]);//
Casa[j][i].setLocation(valor_x,pos_v);
add(avenida_V[i][j]);//
avenida_V[i][j].setLocation(valor_x+tam_casa,pos_v);
//avenida_V[i][j].iniciar();//inicia la ejecucucion del semaforo

add(avenida_H[j][i]);//
avenida_H[j][i].setLocation(valor_x,pos_v+tam_casa);
//avenida_H[j][i].iniciar();//inicia la ejecucucion del semaforo
pos_v+=tam_casa+avenida_H[j][i].getTam();

//La calle horizontal que esta avanzando derecha
add(Casa[i][j]);//
Casa[i][j].setLocation(pos_h,valor_y);
add(avenida_H[i][j]);//
avenida_H[i][j].setLocation(pos_h,valor_y+tam_casa);
//avenida_H[i][j].iniciar();//inicia la ejecucucion del semaforo

add(avenida_V[j][i]);//
avenida_V[j][i].setLocation(pos_h+tam_casa,valor_y);
//avenida_V[j][i].iniciar();//inicia la ejecucucion del semaforo
pos_h+=tam_casa+avenida_V[j][i].getTam();
Localizar(i,j+1,valor_x,valor_y,pos_h,pos_v);
return ;
}
//esto ocurre en el ultimo caso
add(Casa[i][j]);
Casa[i][i].setLocation(valor_x,valor_y);
return ;

}
public void ampliar_Calle()
{
;
}
public static void main(String args[])
{
JFrame vent=new JFrame();
vent.setSize(1000,8000);
Mapa tab=new Mapa();
vent.getContentPane().setLayout(null);
//vent.getContentPane().setBackground(Color.white);
vent.getContentPane().add(tab);
tab.setLocation(0,0);
vent.show();

}
}

Jordi
11 de Junio del 2004
Hola, yo también tengo problema con el scroll en un panel, he probado con panel.autoScroll(true), creo que es algo asi, pero no me ha servido, pruebalo tu, alomejor te funciona

Rigel
11 de Junio del 2004
HOLA:

Mira lo más común para poner Scroll a tu panel es lo siguiente:

Creastu Scroll per en esta parte:

public class Mapa extends JPanel
{
int veces=0,esquina=0;
JScrollPane scroll;

Posteriormente ya que tengas definido tu panel entonces pones esto:

scroll = new JScrollPane(NombreDelPanel);

y ya solo te queda agregar el scroll a un contenedor.
por ejemplo:

add(scroll,BorderLayout.CENTER);

Espero que te sirva.
SALUDOS

Lucas
11 de Junio del 2004
Hauy tutoriales sobre paneles y scroll en java.sun.com Mirad el tema del ViewPort