Desidero visualizzare un albero di file allo stesso modo di java2s.com 'Create a lazy file tree', ma includere le icone di sistema effettive, in particolare per le cartelle. SWT non sembra offrire questo (API programma non supporta le cartelle), quindi mi si avvicinò con il seguente:Come visualizzare l'icona di sistema per un file in SWT?
public Image getImage(File file)
{
ImageIcon systemIcon = (ImageIcon) FileSystemView.getFileSystemView().getSystemIcon(file);
java.awt.Image image = systemIcon.getImage();
int width = image.getWidth(null);
int height = image.getHeight(null);
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = bufferedImage.createGraphics();
g2d.drawImage(image, 0, 0, null);
g2d.dispose();
int[] data = ((DataBufferInt) bufferedImage.getData().getDataBuffer()).getData();
ImageData imageData = new ImageData(width, height, 24, new PaletteData(0xFF0000, 0x00FF00, 0x0000FF));
imageData.setPixels(0, 0, data.length, data, 0);
Image swtImage = new Image(this.display, imageData);
return swtImage;
}
Tuttavia, le regioni che dovrebbero essere trasparenti sono visualizzati in nero. Come faccio a farlo funzionare, o c'è un altro approccio che dovrei prendere?
Aggiornamento:
Penso che il motivo è che PaletteData
non è previsto per la trasparenza a tutti.
Per ora, compilo il BufferedImage
con Color.WHITE
ora, che è una soluzione accettabile. Tuttavia, mi piacerebbe conoscere la vera soluzione qui ...
Sono andato con questo approccio. Trovo triste, tuttavia, che devi saltare attraverso questi cerchi per farlo funzionare. –