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){
    }
}










 
