/**
 * @author Administrator
 * @060813
 */
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.zip.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
public class n125_ZipTest {
public static void main(String[] args){
ZipTestFrame frame = new ZipTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class ZipTestFrame extends JFrame {
public ZipTestFrame() {
setTitle("ZipTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("File");
JMenuItem openItem = new JMenuItem("Open");
menu.add(openItem);
JMenuItem exitItem = new JMenuItem("Exit");
menu.add(exitItem);
exitItem.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
} );
menuBar.add(menu);
setJMenuBar(menuBar);
fileText = new JTextArea();
fileScroll = new JScrollPane(fileText);
fileCombo = new JComboBox();
fileCombo.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent event) {
loadZipFile( (String)fileCombo.getSelectedItem() );
}
} );
Container contentPane = getContentPane();
contentPane.add(fileCombo, BorderLayout. SOUTH);
contentPane.add(fileScroll, BorderLayout. CENTER);
}
private class OpenAction implements ActionListener {
public void actionPerformed(ActionEvent evt) {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory( new File(".") );
ExtensionFileFilter filter = new ExtensionFileFilter();
filter.addExtension(".zip");
filter.addExtension(".jar");
filter.setDescription("ZIP archives");
chooser.setFileFilter(filter);
int r = chooser.showOpenDialog(ZipTestFrame.this);
if(r == JFileChooser.APPROVE_OPTION) {
zipname = chooser.getSelectedFile().getPath();
scanZipFile();
}
}
}
public void scanZipFile() {
try {
ZipInputStream zin = new ZipInputStream( new FileInputStream(zipname) );
ZipEntry entry;
while ( (entry = zin.getNextEntry()) != null ) {
fileCombo.addItem( entry.getName() );
zin.closeEntry();
}
zin.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
public void loadZipFile(String name) {
try {
ZipInputStream zin = new ZipInputStream( new FileInputStream(zipname) );
ZipEntry entry;
fileText.setText("");
while ( (entry = zin.getNextEntry()) != null ) {
if ( entry.getName().equals(name) ) {
BufferedReader in = new BufferedReader( new InputStreamReader(zin) );
String line;
while ( (line = in.readLine()) != null ) {
fileText.append(line);
fileText.append("\n");
}
}
zin.closeEntry();
}
zin.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
public static final int DEFAULT_WIDTH = 400;
public static final int DEFAULT_HEIGHT = 300;
private JComboBox fileCombo;
private JTextArea fileText;
private JScrollPane fileScroll;
private String zipname;
}
class ExtensionFileFilter extends FileFilter {
public void addExtension(String extension) {
if ( !extension.startsWith(".") )
extension = "."+extension;
extensions.add(extension.toLowerCase());
}
public void setDescription(String aDescription) {
description = aDescription;
}
public String getDescription() {
return description;
}
public boolean accept(File f) {
if(f.isDirectory()) return true;
String name = f.getName().toLowerCase();
for (int i = 0; i<extensions.size(); i++)
if(name.endsWith( (String)extensions.get(i)))
return true;
return false;
}
private String description = "";
private ArrayList extensions = new ArrayList();
}//为什么按了"Open"后没有窗口跳出来?

解决方案 »

  1.   

    好象OpenAction都没有被注册过哦
      

  2.   

    JMenuItem openItem = new JMenuItem("Open");
    menu.add(openItem);
    openItem.addActionListener(new OpenAction());
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~你没把事件处理对象赋予openItem
      

  3.   

    学习+职业交流QQ群,欢迎接分,加入.http://community.csdn.net/Expert/topic/4946/4946220.xml?temp=.7922022
      

  4.   

    应该在            JMenu menu = new JMenu("File");
    JMenuItem openItem = new JMenuItem("Open");
    menu.add(openItem);
    后加一句          openItem.addActionListener(new OpenAction());