import java.util.List; import java.util.*; import org.eclipse.swt.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.program.*; import org.eclipse.swt.widgets.*; public class ProgramImageTest { public static void main(String[] args) { final Display display = new Display(); final List images = createImages(display, "zip", "pdf", "png", "jpg", "msi", "txt", "theme"); final Shell shell = new Shell(display); shell.addListener(SWT.Paint, event -> { int x = 0; for (Image image : images) { event.gc.drawImage(image, x, 0); x += image.getImageData().width; x += 10; } }); shell.setSize(400, 300); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } for (Image image : images) { image.dispose(); } display.dispose(); } private static List createImages(Display display, String... extensions) { final List images = new ArrayList<>(); for (String extension : extensions) { final Program program = Program.findProgram(extension); if (program == null) { continue; } final ImageData data = program.getImageData(); if (data == null) { continue; } images.add(new Image(display, data)); } return images; } }