⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainframe.java

📁 Java实现的png图片裁减工具
💻 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 + -