Problema con JScrollPane y JPanel, usando setlayout(null) y .setbounds

Iniciado por yeah69, 13 Junio 2010, 20:09 PM

0 Miembros y 2 Visitantes están viendo este tema.

yeah69

Bueno, igual por el título ya sabéis más o menos de que va. Quiero mostrar varias cosas (JTextFields JButtons...) y no me entran en mi ventana. Entonces me he creado un JPanel y ahí meto todos estos componentes. A su vez este JPanel lo meto un JScrollPane y para finalizar agrego el JScrollPane.
Yo estoy usando por sistema this.setlayout(null) y .setbounds() porque así lo utiliza el programa y tengo que seguir esa metodología. Pero aquí tengo problemas... pongo el código:

Código (java) [Seleccionar]
/////////////// recuadro con scroll

JPanel panel = new JPanel();

panel.setBounds(new Rectangle(15, 15, 380, 600));

JLabel[] unidadUsos = new JLabel[argumentos.length];
JLabel[] mensajeUsos = new JLabel[argumentos.length];
JLabel[] mensajeUnidades = new JLabel[argumentos.length];
usosSeleccionados = new JTextField[argumentos.length];
int numX = 5;
posY = 0;
for(int i=0;i<argumentos.length;i++){

posY = 5+(i*50);
mensajeUsos[i] = new JLabel(argumentos[i]+":");
mensajeUsos[i].setBounds(numX,posY,300,20);
//panel.setLayout(null);
panel.add(mensajeUsos[i]);
unidadUsos[i] = new JLabel("Uso "+(i+1)+"- Po: ");
unidadUsos[i].setBounds(numX,posY+20,65,20);
//panel.setLayout(null);
panel.add(unidadUsos[i]);
usosSeleccionados[i] = new JTextField("0");
usosSeleccionados[i].setBounds(numX+60,posY+20,35,20);
//panel.setLayout(null);
panel.add(usosSeleccionados[i]);
mensajeUnidades[i] = new JLabel(" mm");
mensajeUnidades[i].setBounds(numX+95,posY+20,80,20);
//panel.setLayout(null);
panel.add(mensajeUnidades[i]);
}

posY = 85;


JScrollPane panelScroll = new JScrollPane(panel);
panelScroll.setBounds(15,posY,350,300);
this.add(panelScroll);
this.setLayout(null);d

yeah69

vaya, se me ha enviado según ponía el código... bueno lo que me pasa es lo siguiente:
en el caso de que no use panel.setlayout(null) se van metiendo los componentes uno a uno y siempre a la misma alturo, uno a la derecha del otro....



se puede observar que la barra horizontal es finísima y que todos están en la misma fila...cuando deberían ponerse unos debajo de otros

mientras que si dejo el layout(null); sí, se me van metiendo como yo quiero, pero solo me coge hasta que entra en el espacio que tiene el JScrollPane y no me aparece ninguna barra



como veis solo se ven hasta 6 de los 48 registros que tengo que meter, y ni rastro de la barra vertical (he probado con el codigo para que se muestre siempre dicha barra y nada)

alguna idea por favor??

muchas gracias  :D :D

yeah69

creo que tengo que escribir un .setPreferredSize pero no se si al JPanel o a JScrollPane y con qué dimension...

Leyer

Correcto, tienes que usarlo en el Jpanel con la dimension vertica de acuerdo a tus componentes

yeah69

sip, ya lo he solucionado , con meter un .setPreferredSize ya funciona  ;D ;D
gracias!!!

NovateJava

Como lo solucionaste? es que tengo un problema parecido ,igual se que tengo que usar eso de setPre... pero no sé que me didas porfavor me urge saber como lo solucionaste?
lo que intento hacer es un simple panel con componentes dentros , y que el panel tenga barras de dezplazmiento, es muy parecido a lo que tu hiciste
porfis soy muy novata en java

+ 1 Oculto(s)

porque usan setlayout(null) , mejor usen algun layout para que sea responsive al screen
bueno es un consejo solamente

nota: este es un tema muy antiguo deberias crear uno nuevo