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