自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺析Swing Image的轉(zhuǎn)換

開發(fā) 后端
本文介紹Swing Image轉(zhuǎn)換當(dāng)然可能很少會(huì)用到,不過了解一下也是沒有壞處的。我們想做一個(gè)類型于Windows的explorer的一個(gè)文件樹來顯示文件。

我覺得這種Swing Image轉(zhuǎn)換當(dāng)然可能很少會(huì)用到,不過了解一下也是沒有壞處的。

例如,我們想做一個(gè)類型于Windows的explorer的一個(gè)文件樹來顯示文件,希望每個(gè)樹結(jié)點(diǎn)的圖標(biāo)和在explorer里看到的一樣。到現(xiàn)在為此我不知道怎么用SWT去得到每個(gè)文件或文件夾的顯示圖標(biāo)。因此我要借助SWing來完成。

首先,我們需要得到一個(gè)對應(yīng)于文件(夾)圖標(biāo)的Swing Image對象。如下:

  1. java.awt.Image icon = ShellFolder.getShellFolder(file).getIcon(true);   

接下來就是要從這個(gè)Swing Image開始做轉(zhuǎn)換。顯示不能直接把這個(gè)icon轉(zhuǎn)換成SWT的一個(gè)Image對象。所以我們需要先把這個(gè)icon變成字節(jié)流,假如我們希望轉(zhuǎn)換后圖標(biāo)的大小是16*16。那么,可以如下做:

  1. int width = 16;    
  2. int height = 16;    
  3. BufferedImage b = new BufferedImage(width, height,    
  4. BufferedImage.TYPE_INT_RGB);    
  5. Graphics graphics = b.getGraphics();    
  6. graphics.drawImage(icon, 0, 0, width, height, null);    
  7. ByteArrayOutputStream baos = new ByteArrayOutputStream();    
  8. ImageIO.write(b, "png", baos);   

先轉(zhuǎn)成一個(gè)BufferedImage,然后把這個(gè)BufferedImage存入一個(gè)字符數(shù)組轉(zhuǎn)出流。最后只要從這個(gè)輸出流中得到字節(jié)數(shù)組就可以:

  1. byte[] by = baos.toByteArray();  

這樣就得到了這個(gè)Swing圖標(biāo)對應(yīng)的一個(gè)字節(jié)數(shù)組。

要從一個(gè)字節(jié)數(shù)組得到對應(yīng)的一個(gè)SWT的圖標(biāo)就比較簡單了,我們可以先用這個(gè)數(shù)組構(gòu)造出一個(gè)ImageData對象,如下:

  1. ImageData data = new ImageData(new ByteArrayInputStream(by));    
  2. for (int i = 0; i < width; i++) {    
  3. for (int j = 0; j < height; j++) {    
  4. if (data.getPixel(i, j) == 0) {    
  5. data.setPixel(i, j, 0xffffff);    
  6. }    
  7. }    
  8. }   

這里有一點(diǎn)要注意:在沒有圖元點(diǎn)的地方,默認(rèn)會(huì)顯示一個(gè)黑點(diǎn),我把顯示黑點(diǎn)的地方都用一個(gè)白點(diǎn)做了替換。最后,根據(jù)這個(gè)data構(gòu)造出對應(yīng)的Image,如下:

  1. image = new Image(Display.getDefault(), data); 

【編輯推薦】

  1. Swing應(yīng)用程序處理函數(shù)
  2. 淺談SwingWorker的使用
  3. AWT,SWT和Swing的布局管理器與Look And Feel機(jī)制
  4. 概述SWT采用AWT和Swing的一些優(yōu)點(diǎn)
  5. Swing組件的paint方法的處理流程
責(zé)任編輯:佚名 來源: 人民郵電出版社
相關(guān)推薦

2009-07-15 11:02:32

Swing組件

2009-07-10 10:37:50

Swing Set示例

2009-07-16 09:54:44

LookupEventSwing線程

2009-07-15 10:06:54

Swing實(shí)現(xiàn)MDI

2009-07-17 16:41:48

actionPerfoSwing

2009-07-15 16:03:26

Swing線程

2009-07-10 14:20:01

AcceleratorJava Swing

2009-07-15 16:50:07

Swing項(xiàng)目

2009-07-15 13:46:26

Swing體系結(jié)構(gòu)

2009-07-16 17:01:09

Swing字符串

2012-01-17 17:21:24

JavaSwing

2009-07-14 14:00:47

iData技術(shù)

2009-07-10 17:24:07

Swing應(yīng)用程序

2009-07-15 17:33:08

Swing客戶端

2009-07-14 15:12:36

SwingSWT和AWT

2009-09-11 12:41:41

C#類型轉(zhuǎn)換

2009-08-26 15:04:35

C#轉(zhuǎn)換

2009-07-15 15:35:59

Swing程序Swing性能

2009-02-25 09:52:14

類型轉(zhuǎn)換.NET 強(qiáng)制轉(zhuǎn)型

2009-08-04 14:56:34

ASP.NET數(shù)據(jù)類型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)