Foros del Web » Programación para mayores de 30 ;) » Java »

JScrollPane

Estas en el tema de JScrollPane en el foro de Java en Foros del Web. Mi proposito es tener una imagen en una ventana, pero luego esta sera modificada ( en plan paintbrush ) el caso es q no me ...
  #1 (permalink)  
Antiguo 18/02/2004, 13:42
 
Fecha de Ingreso: julio-2003
Mensajes: 38
Antigüedad: 20 años, 9 meses
Puntos: 0
JScrollPane

Mi proposito es tener una imagen en una ventana, pero luego esta sera modificada ( en plan paintbrush ) el caso es q no me hace el scroll

Esto funciona, pero necesitaria un canvas si luego la voy a modificar:

foto = new ImageIcon();
JLabel label = new JLabel(foto);
scrollPane = new JScrollPane(label);
scrollPane.getViewport().add(label);
this.getContentPane().add(scrollPane, null);

Con un JList tb funciona sin problema:

scrollPane = new JScrollPane();
scrollPane.getViewport().add(listaJList);
this.getContentPane().add(scrollPane, null);

Pero cuando lo hago con mapa q extiende de Canvas ( con JPanel tb prove ) pos no va nada ni barras de scroll ni na:

mapa = new Mapa(new Dimension(2000, 2000));
mapa.cargarImagen("c:/underwater.jpg");
scrollPane = new JScrollPane();
scrollPane.getViewport().add(mapa);
this.getContentPane().add(scrollPane, null);


gracias saludos;
  #2 (permalink)  
Antiguo 14/08/2009, 10:35
 
Fecha de Ingreso: septiembre-2008
Mensajes: 9
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: JScrollPane

A mi me da el mismo problema con un jPanel.

Inserto dentro de un JPanel checkbox, y este se encierra en un jscrollPane para poder hacer scroll cuando aumente de tamaño, pero se superpone a la ventana entera, incluso al mainframe.

// Creamos su checkbox
java.awt.Checkbox cBox = new Checkbox ("Contenedor " + iContenedor);
cBox.setVisible(true);

this.jPanel5.setLayout(new GridLayout (100,1));
this.jPanel5.add(cBox);

this.jScrollPane4.getViewport().add(jPanel5);

cBox.validate();
this.jPanel5.validate();
this.jScrollPane4.validate();
this.getFrame().getContentPane().validate();

super.getFrame().pack();
super.getFrame().setVisible(true);

Si alguien sabe como solventar el problema o se le ocurre alguna idea, me sería de gran ayuda. Un saludo a tod@s.

Última edición por Serdio; 14/08/2009 a las 13:46 Razón: Elimino una línea de código comentada
  #3 (permalink)  
Antiguo 16/08/2009, 05:10
 
Fecha de Ingreso: septiembre-2008
Mensajes: 9
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: JScrollPane

El problema de no ver las barras de scroll es debido a que has de contener al jPanel en tu JScrollPane. De esta forma cada vez que hagamos un add, su tamaño se verá afectado y hará que el jSrollPane acceda a su configuración para chequear la política de las barras horizontale sy verticales.

Esto se debería seleccionar al principio en el constructor.

Mi problema es que cuando muevo con las barras de scroll el panel que tengo contenido este sobresale a toda la superficie. He probado seleccionando el Viewport del jScrollPane, pero sigo sin obtener resultados.

A alguien se le ocurre algo??
  #4 (permalink)  
Antiguo 20/08/2009, 03:17
 
Fecha de Ingreso: septiembre-2008
Mensajes: 9
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: JScrollPane

Sigo investigando en el tema y creo que el hecho de que sobresalga del JScrollPane el JPanel, es debido a los límites. Por lo que he tratado de seleccionar el borde del JPanel con respecto al borde que debe tener según el tañamo del JScrollPanel, pero sigue igual.

this.jPanel5.setBorder(this.jScrollPane4.getViewpo rt().getBorder());

También he actualizado con updateUI(), como con validate() en ambos objetos, por si fuera problema de refresco en estos. Pero sigue superponiendose, tanto en el momento en el cual añado un nuevo checkbox (en tiempo de ejecución) como cuando muevo con las barras de scroll el JPanel (sobresaliendo por otro lado).
  #5 (permalink)  
Antiguo 26/08/2009, 05:44
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: JScrollPane

Hola:

Para meter algo dentro de un JScrollPane no uses scrollpane.getViewport().add(panel) sino scrollpane.setViewporView(panel).

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 26/08/2009, 06:13
 
Fecha de Ingreso: septiembre-2008
Mensajes: 9
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: JScrollPane

Mil gracias por tu repuesta chuidiang.

Lo malo es que sigue sin funcionarme, cuando el panel (jPanel5) crece lo suficiente como para que hayan de salir las barras de scroll (en jScrollPane4) este se sigue saliendo del marco. Lo que he hecho ha sido esto:

// Creamos su checkbox
java.awt.Checkbox cBox = new Checkbox ("Contenedor " + iContenedor);

// Añado su manejador de eventos
cBox.addItemListener(new ManejadorEv (iContenedor));
cBox.setVisible(true);

this.jPanel5.add(cBox);

/* Validates */
cBox.validate();
this.jScrollPane4.setViewportView(jPanel5);
this.jPanel5.validate();
this.jPanel5.updateUI();
this.jScrollPane4.validate();
this.jScrollPane4.updateUI();

this.getFrame().getContentPane().validate();
super.getFrame().validate();

Un saludo.
  #7 (permalink)  
Antiguo 26/08/2009, 13:05
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: JScrollPane

Hola:

No es necesario llamar a tanto validate. Unicamente, si la ventana es visible y le añades en algún sitio un nuevo JCheckBox, basta llamar al updateUI() del panel o del JCheckBox.

Es raro que el panel se salga del JScrollPane. Intenta revisar qué estás haciendo exactamente y procura usar componentes sólo de SWING (JCheckBox en vez de CheckBox)

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #8 (permalink)  
Antiguo 26/08/2009, 13:12
 
Fecha de Ingreso: septiembre-2008
Mensajes: 9
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: JScrollPane

Chuidiang eres una máquina

Mi más sincero agradecimiento por haber me ayudado. El problema era mezclar componentes AWT con SWING. Una vez cambié el Checkbox por JCheckBox, el código anterior funcionó a las mil maravillas.

Mil gracias, y como que no te hago un hijo porque sería virtual que sino .... xD
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:33.