Feeds de los foros

En la página principal de los foros encontrarás los enlaces al logo feed feed general y al de cada uno de los foros.

Subscribete para mantenerte informado de los cambios y responde a las dudas siempre que te sea posible

Buscar en el foro

Foro Foro antiguo sobre java

feed Foro Foro antiguo sobre java Foro: Foro antiguo sobre java

Re: Evento en JComboBox 01/02/2003 00:00
viejo-foro El fallo está aquí:

public void actionPerformed(ActionEvent e)
JComboBox cb = (JComboBox)e.getSource();
String petName = (String)cb.getSelectedItem();
System.out.println(petName) ;
ImageIcon icono=new ImageIcon("imagenes/"+petName+".gif");


<--------- -new LabelPersonal(icono.getImage());---------->

{}

Creas una nueva label pero ni eliminas la anterior d ela UI, ni añades la nueva a la UI, la creas, no te quedas con una referencia a ella y el Garbage collector la elimina.

Haz una de dos: elimina la label antigua del UI, cambiala por la nueva y llama a validate() sobre el frame, o camia el icono de la label incial por el nuevo con el metodo setIconImage, o algo asó. Es más eficiente la segunda aproximación, evitas crear obtetos de un modo inútil.

Saludos.
#unapprove_message#
Evento en JComboBox 01/02/2003 00:00
viejo-foro Hola a todos: alguien puede decirme el fallo de este código?. Se trata de un combo box y una label. En función del elemento del combo seleccionado debe aparecer una imagen distinta. Además, la imagen debe ocupar todo el área disponible en la label. La imagen preseleccionada se muestra bien, pero al seleccionar otro animal del combo, no se modifica la imagen.

Gracias

Código:

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

public class EventoComboBox extends JFrame implements ActionListener
LabelPersonal miLabel;
String[] petStrings={"Bird","Cat","Dog","Rabbit","Pig"{};

public EventoComboBox(String titulo)
super(titulo);

//Crear el combo box directamente mediante un array
//y seleccionar por defecto el cerdo
JComboBox petList = new JComboBox(petStrings);
petList.setSelectedIndex(4);

//Asignar un escuchador de ActionEvent y gestionarlos
petList.addActionListener(this);

//Mostrar la imagen preseleccionada en la línea 14
miLabel=new LabelPersonal(new ImageIcon("imagenes/"+petStrings[petList.getSelectedIndex()] +".gif").getImage());
//label.setBorder(BorderFactory.createEmptyBorder(10,0,0,0)) ;
miLabel.setBorder(BorderFactory.createTitledBorder(
BorderFactory.createLoweredBevelBorder(),
"Masc otas",
TitledBorder.LEFT,
TitledBorder.TOP ));

//Obtener panel de contenido, asignar administrador y borde y agregar componentes
JPanel contentPane=(JPanel)getContentPane();
contentPane.setLayout(new BorderLayout());

//Este borde hace que el combo box y la label no estén pegados a los
//bordes de la frame
contentPane.setBorder(BorderFactory.createEmptyBorder(20,20, 20,20));

contentPane.add(petList,BorderLayout.NORTH);
contentPane.add(miLabel,BorderLayout.CENTER);
{}
public void actionPerformed(ActionEvent e)
JComboBox cb = (JComboBox)e.getSource();
String petName = (String)cb.getSelectedItem();
System.out.println(petNam e);
ImageIcon icono=new ImageIcon("imagenes/"+petName+".gif");
new LabelPersonal(icono.getImage());
{}
public static void main(String s[])
JFrame frame = new EventoComboBox("Eventos con combo box");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setVisible(true);
{}
}
class LabelPersonal extends JLabel
Image imagen;
public LabelPersonal(Image imagen){
this.imagen=imagen;
System.out.println("C onst");
{}
public void paint(Graphics g)
System.out.println("paint");
g.drawImage(imagen ,0,0,getWidth(),getHeight(),this);
{}
}
#unapprove_message#
Este foro no acepta nuevos mensajes.
Sun Microsystem Logo NHT-Norwick Logo

© 2002-2007 Asociación javaHispano