1. 程式人生 > >JAVA之關於swing窗體設定預設焦點

JAVA之關於swing窗體設定預設焦點

畫了個簡單的dialog, 但是焦點總是停在User Name的text field上. 想把焦點放在OK button上, 按回車的時候就能執行Ok button的功能.

<wbr><a target="_blank" href="http://photo.blog.sina.com.cn/showpic.html#blogid=4bd76d2b0100d1p8&amp;url=http://s2.sinaimg.cn/orignal/4bd76d2bh6833556a5181" style="text-decoration:none; color:rgb(144,94,64)"><img src="http://s2.sinaimg.cn/bmiddle/4bd76d2bh6833556a5181" alt="Swing&lt;wbr&gt;設定預設焦點" title="Swing&lt;wbr&gt;設定預設焦點" style="margin:0px; padding:0px; border:0px; list-style:none"></a></wbr>

加了dialog.getRootPane().setDefaultButton(okBtn), okBtn.requestFocus()以後,按回車倒是可以執行Ok button動作了,但是明顯的看到焦點還是在User Nametext field.

Swing<wbr>設定預設焦點

okBtn.requestFocus()確實是執行了, 但就是沒有生效. 後來在網上查了很長時間才找到, 要在dialog開啟之前設定預設焦點的元件才會生效, 所以dialog上加WindowListener, 然後在windowOpened 的方法裡面呼叫requestFocus方法.

Dialog.addWindowListener(new WindowAdapter(){

<wbr><wbr><wbr><wbr><wbr><wbr>public void windowOpened(WindowEvent e) {</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>okBtn.requestFocus();</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr>

});

Swing<wbr>設定預設焦點

按回車直接可以執行OK button的動作,同時也能看到焦點在OK button.