Oct 31

The Class class has methods for looking up resources using the class loader.

For example to find the URL of the file myresource.txt in the same directory as MyClass.class you would use the following (this requires that MyClass.class is available in the classpath)

URL resource = MyClass.class.getResource("myresource.txt");

written by objects \\ tags: , ,

Oct 31

You can achieve that by creating a custom ListCellRenderer. Easiest is to subclass DefaultListCellRenderer and override the getListCellRendererComponent() method to add the appropriate icon.

That just leaves how to determine which icon to use for a given combo item value. One solution to this is to provide the renderer with a set of mappings containing what icon to use for which value.

import java.awt.Component;
import java.util.HashMap;
import java.util.Map;

import javax.swing.DefaultListCellRenderer;
import javax.swing.Icon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.plaf.metal.MetalIconFactory;

public class IconListRenderer 
	extends DefaultListCellRenderer {

	private Map<Object, Icon> icons = null;
	public IconListRenderer(Map<Object, Icon> icons) {
		this.icons = icons;
	public Component getListCellRendererComponent(
		JList list, Object value, int index, 
		boolean isSelected, boolean cellHasFocus) {
		// Get the renderer component from parent class
		JLabel label = 
			(JLabel) super.getListCellRendererComponent(list, 
				value, index, isSelected, cellHasFocus);
		// Get icon to use for the list item value
		Icon icon = icons.get(value);
		// Set icon to display for value
		return label;

	 * @param args
	public static void main(String[] args) {

		// setup mappings for which icon to use for each value
		Map<Object, Icon> icons = new HashMap<Object, Icon>();
		JFrame frame = new JFrame("Icon List");
		// create a list with some test data
		JComboBox combo = new JComboBox(
			new Object[] { 
				"details", "computer", "folder", "computer"});
		// create a cell renderer to add the appropriate icon
		combo.setRenderer(new IconListRenderer(icons));


written by objects \\ tags: , ,

Oct 30

Create a ByteArrayInputStream from your byte array and then use ImageIO class to read image from that stream.

InputStream in = new ByteArrayInputStream(bytearray);
BufferedImage image = ImageIO.read(in);

written by objects \\ tags: , , ,