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
Post a Comment