java - Regarding JFileChooser -


i have developed program counting number of lines in file shown below

scanner in=new scanner(system.in);     system.out.println("enter drive name c,d,e etc");     string drive=in.next();     system.out.println("enter main folder name");     string main_folder=in.next();     file directory=new file(drive+":"+"//"+main_folder+"//");  map<string, integer> result = new hashmap<string, integer>();     //file directory = new file("c:/test/");     file[] files = directory.listfiles();     (file file : files) {         if (file.isfile()) {             scanner scanner = new scanner(new filereader(file));             int linecount = 0;             try {                 (linecount = 0; scanner.nextline() != null; linecount++);             } catch (nosuchelementexception e) {                 result.put(file.getname(), linecount);             } }}              for( map.entry<string, integer> entry:result.entryset()){           system.out.println(entry.getkey()+" ==> "+entry.getvalue());         } 

but trying add swing interface jfilechooser , want user should select particular folder , files inside folder selected , rest above code works , please advise

please advise desiging jfile chooser can integrate above code.

i have design 1 more solution is

package aa;  import java.awt.container; import java.awt.flowlayout; import java.awt.filedialog; import java.awt.gridlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.io.bufferedreader; import java.io.datainputstream; import java.io.file; import java.io.fileinputstream; import java.io.inputstreamreader;  import javax.swing.jbutton; import javax.swing.jfilechooser; import javax.swing.jframe; import javax.swing.jtextfield;  public class filebrowse extends jframe {  private jbutton browseswing = new jbutton("choose file"); private jtextfield textfield = new jtextfield(30); private jbutton approve = new jbutton("ok");   public filebrowse() { setdefaultcloseoperation(jframe.exit_on_close); setsize(600,80); setresizable(false);  browseswing.addactionlistener(new actionlistener() {     public void actionperformed(actionevent arg0) {         if (arg0.getsource()==browseswing)         onbrowseswing();         }});   container container = getcontentpane(); container.setlayout(new flowlayout()); container.add(browseswing); container.add(textfield); container.add(approve);  //pack(); }  protected void onbrowseswing() { jfilechooser filechooser = new jfilechooser(); int result = filechooser.showdialog(this, "open/save"); if (result == jfilechooser.approve_option) { file file = filechooser.getselectedfile(); textfield.settext(file.tostring()); string x = file.tostring(); fileread(x); } }  public void fileread(string input){     try{         // open file first         // command line parameter         fileinputstream fstream = new fileinputstream(input);         // object of datainputstream         datainputstream in = new datainputstream(fstream);             bufferedreader br = new bufferedreader(new inputstreamreader(in));         string strline;         int count = 0;         int count2 = 0;         //read file line line         while((strline = br.readline())!= null ){             if (strline.trim().length() != 0){                 count++;             }else{                 count2++;             }         }         system.out.println("-------lines of codes-------");         system.out.println("number of lines:" + count);         system.out.println("number of blank lines:" + count2);         //close input stream         in.close();         }catch (exception e){//catch exception if           system.err.println("error: " + e.getmessage());         }   }   public static void main(string[] args) { new filebrowse().setvisible(true);  } } 

but chooses individual files want files selected inside folder test

you use code (adapted here):

    jfilechooser chooser = new jfilechooser();     chooser.setcurrentdirectory(new java.io.file("."));     chooser.setdialogtitle("choosertitle");     chooser.setfileselectionmode(jfilechooser.directories_only);     chooser.setacceptallfilefilterused(false);      if (chooser.showopendialog(null) == jfilechooser.approve_option)     {          map<string, integer> result = new hashmap<string, integer>();         file directory = new file(choosers.getselectedfile().getabsolutepath()); //this need change.         file[] files = directory.listfiles();         (file file : files)         {             if (file.isfile())             {                 scanner scanner = new scanner(new filereader(file));                 int linecount = 0;                 try                 {                     (linecount = 0; scanner.nextline() != null; linecount++)                         ;                 } catch (nosuchelementexception e)                 {                     result.put(file.getname(), linecount);                 }             }         }          (map.entry<string, integer> entry : result.entryset())         {             system.out.println(entry.getkey() + " ==> " + entry.getvalue());         }     } 

this code should replace section:

scanner in=new scanner(system.in); system.out.println("enter drive name c,d,e etc"); string drive=in.next(); system.out.println("enter main folder name"); string main_folder=in.next(); file directory=new file(drive+":"+"//"+main_folder+"//"); 

also, recommendation, when working consoles , system paths, should ideally use file.seperator. automatically provide respective system's path separation character.

as per edit, in case using filechooser.getselectedfile();. file user has selected, per name. should use filechooser.getselectedfile().getabsolutepath() , iterate on files within same directory (as shown above).

edit 2: use code display 2 buttons respective event handlers:

public static void main(string args[]) {         jframe frame = new jframe("button sample");         frame.setdefaultcloseoperation(jframe.exit_on_close);         jbutton btnexit= new jbutton("exit");              actionlistener actionlistenerexitbutton = new actionlistener() {           @override           public void actionperformed(actionevent actionevent) {             system.out.println("exit button clicked");           }         };         btnexit.addactionlistener(actionlistenerexitbutton);          jbutton btnenter = new jbutton("enter");         actionlistener actionlistenerenterbutton = new actionlistener() {             @override             public void actionperformed(actionevent actionevent) {                 system.out.println("enter button clicked");             }         };         btnenter.addactionlistener(actionlistenerenterbutton);          container contentpane = frame.getcontentpane();         contentpane.add(btnexit, borderlayout.south);         contentpane.add(btnenter, borderlayout.north);         frame.setsize(300, 100);         frame.setvisible(true);       } 

all need plug in code have provided earlier in appropriate event handler.


Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -