Java 系统图标提取
Java本节介绍将指定文件的图标提取为 png 格式图像文件的示例程序。指定文件可以是扩展名为 exe 等的可执行文件,也可以是 dll、xls、doc 等任何文件。
我在互联网上搜索了很多类似的方法,但都没有找到。
下面将介绍一种方法,这种方法可以非常容易地获取信息。
此外,还可以通过这种方式聊天和信使、可在贴纸上附加文件。用于
程序运行抽查
运行样本。
如果与 jar 文件关联,则可以运行。
- 获取示例源代码,编译并运行它。
- 启动后会打开主窗口,将想要提取的图标直接拖放到窗口中即可。
- png 格式的图像文件将输出到与原始 eincon 相同的位置。
计划说明样本
在 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){
}
}