ชวา ไอคอนระบบสารสกัด
ชวาที่นี่เราขอแนะนำโปรแกรมตัวอย่างที่จะแยกไอคอนของไฟล์ที่ระบุเป็นไฟล์รูปภาพรูปแบบ PNG ไฟล์ที่ระบุอาจเป็นไฟล์ปฏิบัติการใดๆ ที่มีนามสกุล .exe, dll, xls, doc ฯลฯ
ฉันค้นหาวิธีการที่คล้ายกันบนอินเทอร์เน็ต แต่ไม่พบอะไรเลย
อย่างไรก็ตาม ฉันได้ค้นพบวิธีการที่ได้มาง่ายมาก ดังนั้นฉันจะแนะนำให้คุณรู้จัก
นอกจากนี้ใน Chat&Messenger วิธีการนี้ก็คือความสามารถในการแนบไฟล์ลงในบันทึกย่อช่วยเตือนมันถูกใช้ใน
ตัวอย่างการยืนยันการทำงานของโปรแกรม
เรียกใช้ตัวอย่าง
*หากไฟล์ jar เชื่อมโยงกัน ก็สามารถดำเนินการได้
- รับซอร์สตัวอย่าง คอมไพล์และรัน
- เมื่อคุณเริ่มต้นระบบ หน้าต่างหลักจะเปิดขึ้น ดังนั้นเพียงลากและวางไอคอนที่คุณต้องการแยกลงในหน้าต่าง
- ไฟล์ภาพในรูปแบบ PNG จะถูกส่งออกไปยังตำแหน่งเดียวกับไอคอนดั้งเดิม
คำอธิบายโปรแกรมตัวอย่าง
กระบวนการแยกไอคอนใน Java ทำได้โดยใช้วิธีการต่อไปนี้
-
ตั้งค่ารูปลักษณ์และความรู้สึกเป็น Windows
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - ไฟล์ที่ได้รับจากการลากและวาง javax.swing.JFileChooser.getIcon() ด้วยวิธี javax.swing.ไอคอน แปลงเป็นวัตถุ
- javax.imageio.ImageIO.write() ส่งออกวัตถุไอคอนไปยังไฟล์ภาพรูปแบบ 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 ส่วนตัว
โมฆะคงที่สาธารณะ main (String [] args) {
ตัวแยก IconExtractor = IconExtractor ใหม่ ();
extractor.setVisible (จริง);
}
IconExtractor สาธารณะ () {
ซุปเปอร์();
พยายาม {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
ตัวเลือก = JFileChooser ใหม่ ();
} จับ (ข้อยกเว้นจ) {
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(สี.สีขาว);
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
jLabel.setOpaque(จริง);
ใหม่ DropTarget(jLabel,
DnDConstants.ACTION_COPY_OR_MOVE นี้);
jContentPane = JPanel ใหม่();
jContentPane.setLayout(BorderLayout ใหม่());
jContentPane.add(jLabel, BorderLayout.CENTER);
}
กลับ jContentPane;
}
// — ใช้ DropTargetListener —————————-
โมฆะสาธารณะลดลง (DropTargetDropEvent dtde) {
dtde.acceptDrop(DnDConstants.ACTION_MOVE);
พยายาม {
tran ที่โอนได้ = dtde.getTransferable();
รายการ fileList = (รายการ) tran
.getTransferData(DataFlavor.javaFileListFlavor);
ตัววนซ้ำ ตัววนซ้ำ = fileList.iterator();
ในขณะที่ (iterator.hasNext()) {
ไฟล์ file = (ไฟล์) iterator.next();
ไอคอน ImageIcon = (ImageIcon) chooser.getIcon (ไฟล์);
สตริงต่อ = file.getAbsoluteFile() + “.png”;
// บันทึกไฟล์รูปภาพ
ImageIO.write((BufferedImage) icon.getImage(), “png”,
ไฟล์ใหม่ (ต่อ));
jLabel.setText(“<html>การสกัดเสร็จสมบูรณ์<br>” + ต่อ);
setIconImage(icon.getImage());
}
dtde.dropComplete (จริง);
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
dtde.dropComplete(เท็จ);
}
}
โมฆะสาธารณะลากEnter (DropTargetDragEvent e) {
}
โมฆะสาธารณะลากOver (DropTargetDragEvent e) {
}
โมฆะสาธารณะ dropActionChanged (DropTargetDragEvent e) {
}
โมฆะสาธารณะลากออก (DropTargetEvent e) {
}
}