Urgente plzz, necesito ayuda para poner un Scroll a un panel
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();
}
}
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();
}
}
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
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
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