Java 系統圖示提煉
Java這裡我們介紹一個範例程序,將指定檔案的圖示提取為png格式的圖像檔案。指定的檔案可以是任何副檔名為.exe的可執行檔、dll、xls、doc等。
我在互聯網上尋找類似的方法,但找不到任何東西。
不過,我發現了一個非常容易獲得的方法,所以我將它介紹給你。
另外,在Chat&Messenger中,這個方法是能夠將文件附加到便籤上它用於
範例程式運行確認
運行樣本
*如果關聯了jar檔就可以執行。
- 取得範例原始碼,編譯並運行它。
- 當您啟動它時,主視窗將打開,因此只需將要提取的圖示拖放到視窗中即可。
- png 格式的影像檔案將輸出到與原始圖示相同的位置。
範例程式說明
Java中提取圖標的過程是透過以下方法實現的。
-
將外觀設定為 Windows。
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - 拖放獲得的文件 javax.swing.JFileChooser.getIcon() 用方法 javax.swing.Icon 轉換為物件。
- javax.imageio.ImageIO.write() 使用此方法將 Icon 物件輸出為 png 格式的影像檔案。
範例程式
導入 javax.imageio.ImageIO;
導入 javax.swing.ImageIcon;
導入 javax.swing.JFileChooser;
導入 javax.swing.JFrame;
導入 javax.swing.JLabel;
導入javax.swing.JPanel;
導入 javax.swing.SwingConstants;
導入 javax.swing.UIManager;
公共類別 IconExtractor 擴充 JFrame
實作 DropTargetListener {
私有 JPanel jContentPane = null;
私有 JLabel jLabel = null;
私有 JFileChooser 選擇器;
公共靜態無效主(字串[] args){
IconExtractor 提取器 = new IconExtractor();
extractor.setVisible(true);
}
公共圖標提取器(){
極好的();
嘗試 {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
選擇器=新的JFileChooser();
} catch (異常 e) {
e.printStackTrace();
}
初始化();
}
私有無效初始化(){
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle(“圖標提取”);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
私有 JPanel getJContentPane() {
如果(jContentPane == null){
jLabel = 新的 JLabel();
jLabel.setText(“拖曳圖示。”);
jLabel.setBackground(Color.white);
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
jLabel.setOpaque(true);
新的 DropTarget(jLabel,
DnDConstants.ACTION_COPY_OR_MOVE,這個);
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(jLabel, BorderLayout.CENTER);
}
返回jContentPane;
}
// — 實作 DropTargetListener —————————-
公共無效下降(DropTargetDropEvent dtde){
dtde.acceptDrop(DnDConstants.ACTION_MOVE);
嘗試 {
可轉移 tran = dtde.getTransferable();
列表文件列表 = (列表) tran
.getTransferData(DataFlavor.javaFileListFlavor);
迭代器 iterator = fileList.iterator();
while (iterator.hasNext()) {
檔案 file = (File) iterator.next();
ImageIcon 圖示 = (ImageIcon) Chooser.getIcon(file);
String ext = file.getAbsoluteFile() + “.png”;
// 儲存圖片文件
ImageIO.write((BufferedImage) icon.getImage(), “png”,
新文件(擴展));
jLabel.setText(“<html>提取完成<br>” + 分機);
setIconImage(icon.getImage());
}
dtde.dropComplete(true);
} catch (異常 e) {
e.printStackTrace();
dtde.dropComplete(假);
}
}
公共無效dragEnter(DropTargetDragEvent e){
}
公共無效dragOver(DropTargetDragEvent e){
}
公共無效dropActionChanged(DropTargetDragEvent e){
}
公共無效dragExit(DropTargetEvent e){
}
}