我已經在Java中使用Swing創建了一個表單。在表單中,我使用了一個文本框,在每次按下按鍵時都必須設置焦點。如何將焦點設置在Java中的特定組件上?如何在Swing中設置Textfield的焦點?
回答
會Component.requestFocus()
給你你需要什麼?
謝謝,讓我看看它是否適用於我 – 2009-09-15 06:10:36
花了我五分鐘找到它...非常適合「簡單」搜索:-(啊,Java API文檔不是典範清楚無論如何:-) – Joey 2009-09-15 06:12:48
僅供參考,[jComponent的javadocs](http://docs.oracle.com/javase/7/docs/api/index.html)說'requestFocus()',「使用這個方法是不鼓勵的,因爲它的行爲是依賴於平臺的我們推薦使用[requestFocusInWindow()](http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocusInWindow())。如果您想了解關於焦點的更多信息,請參見The Java Tutorial中的一節,請參閱[如何使用焦點子系統](http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html)。 「 – 2014-09-11 14:26:56
既然我們已經搜索了API,那麼我們需要做的就是讀取API。
根據API文檔:
「正因爲如此 方法的焦點行爲是與平臺相關的, 開發商大力鼓勵 使用requestFocusInWindow時 可能。」
這會工作..
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Component.requestFocus();
}
});
請注意,上述所有因爲某種原因在JOptionPane中失敗。多試錯(比上述既定的5分鐘,反正)後,這裏是最後的工作:
final JTextField usernameField = new JTextField();
// ...
usernameField.addAncestorListener(new RequestFocusListener());
JOptionPane.showOptionDialog(this, panel, "Credentials", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null);
public class RequestFocusListener implements AncestorListener {
@Override
public void ancestorAdded(final AncestorEvent e) {
final AncestorListener al = this;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JComponent component = e.getComponent();
component.requestFocusInWindow();
component.removeAncestorListener(al);
}
});
}
@Override
public void ancestorMoved(final AncestorEvent e) {
}
@Override
public void ancestorRemoved(final AncestorEvent e) {
}
}
謝謝你的解決方案,這是唯一的方法它工作。 – MyPasswordIsLasercats 2015-01-12 11:23:55
您還可以使用JComponent.grabFocus();
是同
[JComponent.grabFocus()](http://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#grabFocus--)的Javadoc明確指出此方法應該不被客戶端代碼使用,並建議使用'requestFocusInWindow()'方法,這在其他答案中已經提到。 – 2015-05-23 08:50:06
- 1. 如何將焦點設置爲materialUI TextField?
- 2. 無法爲Extjs textfield設置焦點
- 3. 將焦點設置爲JList並將光標放在textField上swing java autocomplete
- 4. 如何在Silverlight中設置焦點
- 5. 如何在Elm中設置焦點?
- 6. 在DataGrid中設置焦點
- 7. 在QTableView中設置焦點
- 8. 在ASP中設置焦點
- 9. 如何使用Swift 3在webview中檢測textfield中的焦點?
- 10. 如何在設置焦點控制
- 11. 如何在Firefox上設置「焦點」?
- 12. 如何將焦點設置在角2
- 13. 如何設置焦點節點Devexpress TreeListControl
- 14. 將焦點集中在Extjs textfield
- 15. Android TextField:以編程方式設置焦點+軟輸入
- 16. 如何設置按鈕上的焦點?
- 17. 如何在textfield中設置nextline
- 18. 如何在TextField中設置光標
- 19. textfield中的鍵盤焦點問題(Codenameone)
- 20. ios8 TextField中的文本彈出焦點
- 21. 從TextField刪除焦點JavaFX
- 22. 如何設置焦點在WPF中的網格中的一行
- 23. 設置焦點在android
- 24. 如何在位置頂部設置TextField?
- 25. Angularjs設置焦點
- 26. nyroModal設置焦點
- 27. 如何在angular.js中點擊li(標籤)設置焦點/活動
- 28. 如何在JavaFX中禁用從textField移動焦點
- 29. 如何在GridView中設置選中網格的焦點
- 30. 如何設置邏輯焦點而不提供鍵盤焦點?
10個問題,沒有人回答接受... – 2009-09-15 06:10:26