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&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<wbr>設定預設焦點" title="Swing<wbr>設定預設焦點" style="margin:0px; padding:0px; border:0px; list-style:none"></a></wbr>
加了dialog.getRootPane().setDefaultButton(okBtn), okBtn.requestFocus()以後,按回車倒是可以執行Ok button動作了,但是明顯的看到焦點還是在User Name的text field上.
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>
});
按回車直接可以執行OK button的動作,同時也能看到焦點在OK button上.