PackageCom.example.io;Importjava.awt.BorderLayout;ImportJava.awt.EventQueue;Importjava.awt.event.ActionEvent;ImportJava.awt.event.ActionListener;ImportJava.io.File;ImportJava.io.FileInputStream;Importjava.util.List;ImportJava.util.Scanner;ImportJava.util.zip.ZipEntry;ImportJava.util.zip.ZipInputStream;ImportJavax.swing.JComboBox;ImportJavax.swing.JFileChooser;ImportJavax.swing.JFrame;ImportJavax.swing.JMenu;ImportJavax.swing.JMenuBar;ImportJavax.swing.JMenuItem;ImportJavax.swing.JScrollPane;ImportJavax.swing.JTextArea;ImportJavax.swing.SwingWorker; Public classZiptest { Public Static voidMain (string[] args) {Eventqueue.invokelater (NewRunnable () {@Override Public voidrun () {Ziptestframe frame=NewZiptestframe (); Frame.setdefaultcloseoperation (Jframe.exit_on_close); Frame.setvisible (true); } }); }}classZiptestframeextendsJFrame { PublicZiptestframe () {Settitle ("Ziptest"); SetSize (Default_width, default_height); JMenuBar MenuBar=NewJMenuBar (); JMenu Menu=NewJMenu ("File"); JMenuItem OpenItem=NewJMenuItem ("Open"); Menu.add (OpenItem); Openitem.addactionlistener (NewActionListener () {@Override Public voidactionperformed (ActionEvent e) {JFileChooser chooser=NewJFileChooser (); Chooser.setcurrentdirectory (NewFile (".")); intR = Chooser.showopendialog (ziptestframe. This); if(r = =jfilechooser.approve_option) {Zipname=chooser.getselectedfile (). GetPath (); Filecombo.removeallitems (); Scanzipfile (); } } }); JMenuItem Exititem=NewJMenuItem ("Exit"); Menu.add (Exititem); Exititem.addactionlistener (NewActionListener () {@Override Public voidactionperformed (ActionEvent e) {system.exit (0); } }); Menubar.add (menu); Setjmenubar (MenuBar); FileText=NewJTextArea (); Filecombo=NewJComboBox (); Filecombo.addactionlistener (NewActionListener () {@Override Public voidactionperformed (ActionEvent e) {loadzipfile (String) Filecombo.getselecteditem ()); } }); Add (Filecombo, Borderlayout.south); Add (NewJScrollPane (FileText), borderlayout.center); } Public voidScanzipfile () {NewSwingworker<void, string>() {@Overrideprotected voidProcess (list<string>names) { for(String name:names) {filecombo.additem (name); }} @OverrideprotectedVoid Doinbackground ()throwsException {zipinputstream Zin=NewZipinputstream (NewFileInputStream (zipname)); ZipEntry entry; while((Entry = Zin.getnextentry ())! =NULL) {Publish (Entry.getname ()); Zin.closeentry (); } zin.close (); return NULL; }}.execute (); } Public voidLoadzipfile (FinalString name) {filecombo.setenabled (false); Filetext.settext (""); NewSwingworker<void, void>() {@Overrideprotected voidDone () {filecombo.setenabled (true); } @OverrideprotectedVoid Doinbackground ()throwsException {Try{zipinputstream Zin=NewZipinputstream (NewFileInputStream (zipname)); ZipEntry entry; while((Entry = Zin.getnextentry ())! =NULL) { if(Entry.getname (). Equals (name)) {Scanner in=NewScanner (Zin); while(In.hasnextline ()) {Filetext.append (In.nextline ()); Filetext.append ("\ n"); }} zin.closeentry (); } zin.close (); } Catch(Exception e) {e.printstacktrace (); } return NULL; }}.execute (); } Public Static Final intDefault_width = 400; Public Static Final intDefault_height = 300; PrivateJComboBox Filecombo; PrivateJTextArea FileText; PrivateString zipname;}
The use of Zipinputstream