Para agregar imágenes a un JComboBox, partiremos de un proyecto Netbeans con la siguiente estructura:
Tenemos dos clases JChomboBox.java y JChomboRenderer.java, estas dos clases forman lo que sera un nuevo JComboBox con soporte para imágenes.
Tenemos también en el proyecto un JFrame en el cual colocaremos nuestro nuevo JComboBox. Las imágenes que utilizaremos para el JCombo, estarán en el mismo proyecto en una carpeta diferente «/com/bo/res/«
A continuación las clases mencionadas.
Clase JChomboRenderer.java
import java.awt.Component;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
/**
* @web https://www.jc-mouse.net/
* @author Mouse
*/
public class JChomboRenderer extends JLabel implements ListCellRenderer{
private ImageIcon[] items;
/** Constrcutor de clase */
public JChomboRenderer( ImageIcon[] items )
{
setOpaque(true);
this.items = items;
}
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
int selectedIndex = ((Integer)value).intValue();
if (isSelected)
{
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
ImageIcon icon = this.items[selectedIndex];
setIcon( icon );
File f = new File( items[selectedIndex].toString() );
setText( f.getName() );
return this;
}
}
Clase JChomboBox.java
import java.awt.Dimension;
import javax.swing.JComboBox;
/**
* @web https://www.jc-mouse.net/
* @author Mouse
*/
public class JChomboBox extends JComboBox {
/** COnstructor de clase */
public JChomboBox( int num_items )
{
Dimension d = new Dimension(206,26);
this.setSize(d);
this.setPreferredSize(d);
//Indices para las imagenes
for( int i=0; i<num_items; i++)
{
this.addItem(i);
}
this.setVisible(true);
}
}//--> fin clase
Finalmente la forma de implementar este nuevo JComboBox en una interfaz
– Primeramente declaramos una variable para el nuevo JChomboBox y un array de imagenes, las imagenes estan en una carpeta /com/bo/res/ y son 4 en formato PNG
//instancia
private JChomboBox jchombobox;
//Array de imagenes
private ImageIcon[] items =
{
new ImageIcon(getClass().getResource("/com/bo/res/clock.png")),
new ImageIcon(getClass().getResource("/com/bo/res/globe.png")),
new ImageIcon(getClass().getResource("/com/bo/res/pages.png")),
new ImageIcon(getClass().getResource("/com/bo/res/recycle.png"))
};
– Ahora en el constructor del JFrame, colocamos:
/**
* Creates new form JFrame1
*/
public JFrame1() {
initComponents();
//=========================
//se crea el jcombo pasando la cantidad de imagenes que tendra el jcombobox
jchombobox = new JChomboBox( items.length );
//se crea y añade un render pasando un array con las imagenes
JChomboRenderer render = new JChomboRenderer( items );
jchombobox.setRenderer(render);
//se añade jcombo al JFrame
this.add(jchombobox);
//Evento Listener
jchombobox.addActionListener (new ActionListener () {
@Override
public void actionPerformed(ActionEvent e) {
//Acción cuando se selecciona un valor del jcombo
System.out.println( "Se selecciono imagen " + jchombobox.getSelectedItem() );
}
});
//=========================
}
probamos el proyecto:
enjoy 🙂
En este tutorial se hará uso de los eventos de ratón de jquery para desplazar shapes sobre el canvas, para tener una mej[...]
Un JSON Web Token es un estandar abierto para la creación de Token de Acceso el cual permite firmar digitalmente informa[...]
En este tutorial aprenderemos a crear nuestra propia aplicación java para generar códigos QR. ¿Que es un Código QR? «Un[...]
Si diseñamos paginas web, nos habremos topado con el problema de colocar una imagen de fondo y que este se adapte a toda[...]
Java2d nos permite manipular imagenes y asi poder crear animaciones sencillas como muestra el siguiente video. Puedes de[...]
Cuando programamos visualmente desde Netbeans, el IDE nos ayuda mucho al generar rapidamente código predefinido, sin emb[...]