java - JDialog box with JtextField ..NO NEED TO CLICK to start typing .! -


i want create jdialog has jtextfield, dialog box should start taking input user no sooner starts(i.e without user having click on it). calling code using combination of key tap.so if other app running , want pop dialog box, press required keys.however currently, have click on dialog box when pops beacuse present running app has focus.anyhelp..thanks

  //creating panel     jpanel panel = new jpanel( new springlayout() );      //creating text field     final jtextfield textfield = new jtextfield(65);       // modifying text field     font font = new font("sansserif",font.layout_left_to_right, 19);     textfield.setfont(font);     textfield.setforeground(color.black);     textfield.setbackground(new color(200,200,200,70)); //253,245,230     //border     textfield.setborder(new bevelborder(bevelborder.lowered));     textfield.requestfocusinwindow();        //modifying panel      label.setlabelfor(textfield);     panel.add(textfield);     panel.setbackground(new color(0,0,0,25));      panel.setpreferredsize(new dimension(750,70));     panel.setborder(new etchedborder(etchedborder.raised));       //lay out panel.     springutilities.makecompactgrid(panel,                                     1 , 2, //rows, cols                                     10, 10,        //initx, inity                                     10, 10);       //xpad, ypad       //create , set window frame      final jdialog frame = new jdialog();     frame.setdefaultcloseoperation(jdialog.dispose_on_close);       //positioning dialog @ center of screen     dimension dim = toolkit.getdefaulttoolkit().getscreensize();     frame.setlocation(dim.width/4-frame.getsize().width/4, dim.height/3-frame.getsize().height/3);      //set content pane.      //adding background       frame.setlayout(new springlayout());     frame.setundecorated(true);      frame.add(panel);            frame.setsize(750,71);      frame.repaint();        java.awt.eventqueue.invokelater(new runnable() {         @override         public void run() {             frame.tofront();                              frame.setalwaysontop(true);             frame.repaint();              frame.setvisible(true);         }     });      frame.addwindowfocuslistener( new windowadapter() {         public void windowopened( windowevent e ){             frame.requestfocus();         }     });  

almost every line of code not needed or in wrong order:

frame.pack(); frame.setsize(750,71);  

well, make mind trying do? pack() method used have frame automatically calculate size based on components added frame. setsize() override results of pack() method. should pack() frame after adding components frame.

frame.repaint(); 

no need repaint(), setvisible(true) method make sure frame painted.

frame.requestfocus(); 

not needed, when frame made visible focus automatically go first component.

so basic order of code should like:

jtextfield textfield = new jtextfield(20);  jframe frame = new jframe(...); frame.add(textfield, borderlayout.page_start); frame.pack(); frame.setvisible(true); 

there no need request focus on text field. focus automatically placed on first component.

you may want take @ swing tutorial on how make dialogs. can use joptionpane prompt user text input. tutorial has working examples.


Comments