📄 mainframe.java
字号:
package pngcutter;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//import javax.swing.border.*;
import java.io.*;
import javax.swing.border.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class MainFrame
extends JFrame {
private final byte HEAD_LEN = 19; //头
private final byte OFFAL_LEN = 12; //尾
private final byte[] HEAD_OFFAL_DATA = {
(byte) 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x0, 0x0, 0x0,
0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x00, 0x0, 0x0, 0x00, 0x49,
0x45, 0x4e, 0x44, (byte) 0xae, 0x42, 0x60, (byte) 0x82
};
JPanel contentPane;
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenuFile = new JMenu();
JMenu jMenuHelp = new JMenu();
JMenuItem jMenuHelpAbout = new JMenuItem();
JMenuItem jMenuFileOpen = new JMenuItem();
JMenuItem jMenuFileExit = new JMenuItem();
JToolBar jToolBar = new JToolBar();
JButton buttonOpen = new JButton();
JButton buttonSave = new JButton();
JButton buttonGroup = new JButton();
ImageIcon image1;
ImageIcon image2;
ImageIcon image3;
JLabel statusBar = new JLabel();
JLabel imgLabel = new JLabel();
BorderLayout borderLayout1 = new BorderLayout();
JPanel panelMain = new JPanel();
//filechooser
JFileChooser jFileChooser = null;
byte m_ConvertedData[];
String m_filePath = null;
// File[] multiFiles;
JPanel jPanel1 = new JPanel();
private boolean isMultiSelect = false;
JList jList1 = new JList();
TitledBorder titledBorder1;
TitledBorder titledBorder2;
//Construct the frame
public MainFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
image1 = new ImageIcon(pngcutter.MainFrame.class.getResource("openFile.gif"));
image2 = new ImageIcon(pngcutter.MainFrame.class.getResource(
"closeFile.gif"));
image3 = new ImageIcon(pngcutter.MainFrame.class.getResource("help.gif"));
contentPane = (JPanel)this.getContentPane();
titledBorder1 = new TitledBorder("");
titledBorder2 = new TitledBorder("");
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(600, 400));
this.setTitle("Png Convertor 1.0 - eshouji.com");
statusBar.setBorder(titledBorder2);
statusBar.setToolTipText("");
statusBar.setText(" Image Convertor @ ...");
jMenuFile.setText("File");
jMenuFileOpen.setText("Open...");
jMenuFileOpen.addActionListener(new MainFrame_jMenuFileOpen_ActionAdapter(this));
jMenuFileExit.setText("Exit");
jMenuFileExit.addActionListener(new MainFrame_jMenuFileExit_ActionAdapter(this));
jList1.setBackground(Color.red);
buttonGroup.addActionListener(new MainFrame_buttonGroup_actionAdapter(this));
jToolBar.setBorder(BorderFactory.createEtchedBorder());
jMenuFile.add(jMenuFileOpen);
jMenuFile.addSeparator();
jMenuFile.add(jMenuFileExit);
jMenuHelp.setText("Help");
jMenuHelpAbout.setText("About");
jMenuHelpAbout.addActionListener(new MainFrame_jMenuHelpAbout_ActionAdapter(this));
jMenuHelp.add(jMenuHelpAbout);
buttonOpen.setToolTipText("Open File");
buttonOpen.setActionCommand("");
buttonOpen.setIcon(image1);
// buttonOpen.setText("Open File");
buttonOpen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
fileOpen_action(e);
}
});
// buttonSave.setText("Convert...");
buttonSave.setToolTipText("Convert");
buttonSave.setIcon(image2);
buttonSave.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
fileSave_action(e);
}
});
buttonGroup.setIcon(image3);
buttonGroup.setText("Group...");
buttonGroup.setForeground(Color.black);
buttonGroup.setToolTipText("Help");
buttonGroup.setVerifyInputWhenFocusTarget(true);
buttonGroup.setFocusPainted(true);
jToolBar.add(buttonOpen);
jToolBar.add(buttonSave);
jToolBar.add(buttonGroup);
jMenuBar1.add(jMenuFile);
jMenuBar1.add(jMenuHelp);
this.setJMenuBar(jMenuBar1);
panelMain.add(imgLabel, BorderLayout.WEST);
contentPane.add(jPanel1, BorderLayout.EAST);
jPanel1.add(jList1, null);
contentPane.add(statusBar, BorderLayout.SOUTH);
contentPane.add(jToolBar, BorderLayout.NORTH);
contentPane.add(panelMain, BorderLayout.WEST);
}
//File | Exit action performed
public void jMenuFileExit_actionPerformed(ActionEvent e) {
jMenuBar1 = null;
jMenuFile = null;
jMenuHelp = null;
jMenuHelpAbout = null;
jMenuFileOpen = null;
jMenuFileExit = null;
jToolBar = null;
buttonOpen = null;
buttonSave = null;
buttonGroup = null;
image1 = null;
image2 = null;
image3 = null;
statusBar = null;
imgLabel = null;
borderLayout1 = null;
panelMain = null;
//filechooser
jFileChooser = null;
System.gc();
System.exit(0);
}
//Help | About action performed
public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
MainFrame_AboutBox dlg = new MainFrame_AboutBox(this);
Dimension dlgSize = dlg.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,
(frmSize.height - dlgSize.height) / 2 + loc.y);
dlg.setModal(true);
dlg.pack();
dlg.show();
}
//File |Open , Button | Open action
protected void fileOpen_action(ActionEvent e) {
if (jFileChooser == null) {
jFileChooser = new JFileChooser("d:");
jFileChooser.setAcceptAllFileFilterUsed(false);
jFileChooser.setFileFilter(new ImageFileFilter());
}
jFileChooser.setMultiSelectionEnabled(false);
int rtn = jFileChooser.showOpenDialog(this); //(this, "OK");
if (rtn == jFileChooser.APPROVE_OPTION) {
m_ConvertedData = null;
File file = jFileChooser.getSelectedFile();
if (file.getName().toLowerCase().endsWith(".png")) {
try {
m_filePath = file.getPath();
FileInputStream fis = new FileInputStream(file);
int size = fis.available();
byte data[] = new byte[size];
fis.read(data);
Image img = Toolkit.getDefaultToolkit().createImage(data);
imgLabel.setIcon(new ImageIcon(img));
m_ConvertedData = new byte[data.length - 31];
System.arraycopy(data, 19, m_ConvertedData, 0, m_ConvertedData.length);
data = null;
fis.close();
fis = null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
else if (file.getName().toLowerCase().endsWith(".img")) {
try {
FileInputStream fis = new FileInputStream(file);
int size = fis.available();
m_ConvertedData = null;
m_ConvertedData = new byte[size];
fis.read(m_ConvertedData);
byte data[] = new byte[size + 31];
System.arraycopy(HEAD_OFFAL_DATA, 0, data, 0, HEAD_LEN);
System.arraycopy(m_ConvertedData, 0, data, HEAD_LEN, size);
System.arraycopy(HEAD_OFFAL_DATA, HEAD_LEN, data,
size + HEAD_LEN, OFFAL_LEN);
Image img = Toolkit.getDefaultToolkit().createImage(data);
imgLabel.setIcon(new ImageIcon(img));
fis.close();
fis = null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
else
JOptionPane.showMessageDialog(this, "Select a PNG/IMG format file pls!");
file = null;
// InputStream is = getClass().getResourceAsStream(path);
}
}
//Button | Save action
protected void fileSave_action(ActionEvent e) {
if (jFileChooser == null) {
jFileChooser = new JFileChooser("d:");
jFileChooser.setAcceptAllFileFilterUsed(true);
jFileChooser.setFileFilter(new ImageFileFilter());
}
jFileChooser.setMultiSelectionEnabled(false);
int rtn = jFileChooser.showSaveDialog(this); //(this, "OK");
if (rtn == jFileChooser.APPROVE_OPTION) {
try {
String path = jFileChooser.getSelectedFile().getPath().toLowerCase();
if (!path.endsWith(".img")) {
JOptionPane.showMessageDialog(this, "Save as a IMG format file pls!");
return;
}
FileOutputStream fos = new FileOutputStream(path);
fos.write(m_ConvertedData);
fos.close();
// System.out.println(jFileChooser.getSelectedFile().getPath());
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
jMenuFileExit_actionPerformed(null);
}
}
void buttonGroup_actionPerformed(ActionEvent e) {
if (jFileChooser == null) {
jFileChooser = new JFileChooser("d:\\");
jFileChooser.setAcceptAllFileFilterUsed(false);
jFileChooser.setFileFilter(new ImageFileFilter());
}
jFileChooser.setMultiSelectionEnabled(true);
int rtn = jFileChooser.showOpenDialog(this); //(this, "OK");
if (rtn == jFileChooser.APPROVE_OPTION) {
File[] multiFiles = jFileChooser.getSelectedFiles();
for (int i = 0; i < multiFiles.length; i++) {
if (multiFiles[i].getName().toLowerCase().endsWith(".png")) {
try {
FileInputStream fis = new FileInputStream(multiFiles[i]);
int len = fis.available() - 31;
byte[] data = new byte[len];
fis.skip(HEAD_LEN);
fis.read(data, 0, len);
//create converted file
File file = new File(multiFiles[i].getPath().replaceFirst(".png",
".img"));
FileOutputStream fos = new FileOutputStream(file);
fos.write(data);
fis.close();
fis = null;
fos.close();
fos = null;
file = null;
data = null;
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
JOptionPane.showMessageDialog(this, multiFiles.length + " Files Converted!");
multiFiles = null;
}
}
}
class MainFrame_jMenuFileExit_ActionAdapter
implements ActionListener {
MainFrame adaptee;
MainFrame_jMenuFileExit_ActionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuFileExit_actionPerformed(e);
}
}
class MainFrame_jMenuHelpAbout_ActionAdapter
implements ActionListener {
MainFrame adaptee;
MainFrame_jMenuHelpAbout_ActionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuHelpAbout_actionPerformed(e);
}
}
//open file adapter
class MainFrame_jMenuFileOpen_ActionAdapter
implements ActionListener {
MainFrame adaptee;
MainFrame_jMenuFileOpen_ActionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.fileOpen_action(e);
}
}
class MainFrame_buttonGroup_actionAdapter
implements java.awt.event.ActionListener {
MainFrame adaptee;
MainFrame_buttonGroup_actionAdapter(MainFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.buttonGroup_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -