嘿,我有一個面板類,其中有兩個面板,其中一個面板有文本字段。我想在焦點集中時執行操作。 面板添加在主框架上。如何查找關注哪個組件?
1
A
回答
1
使用FocusListener
,下面是簡單的例子:
import java.awt.BorderLayout;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class TestFrame extends JFrame{
public TestFrame(){
init();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
private void init() {
JTextField f1 = new JTextField(5);
f1.addFocusListener(getFocusListener());
add(f1,BorderLayout.SOUTH);
add(new JTextField(5),BorderLayout.NORTH);
}
private FocusListener getFocusListener() {
return new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
super.focusGained(e);
System.out.println("action");
}
};
}
public static void main(String... s){
new TestFrame();
}
}
而且JFrame
有getFocusOwner()
方法。
1
使用API
JFrame.getFocusOwner()
這將返回焦點的參考組件
也CA檢查....
KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()
要修改,只需添加一個FocusListener到你的相應組件,並實現你的特定acitons的接口。
1
有視覺線索有助於瞭解哪個組件具有焦點,例如文本字段中的活動光標。要使用FocusListener
接口並且爲了監聽鍵盤獲得或失去焦點,從類創建的偵聽器對象需要使用組件的addFocusListener()
方法向組件註冊。兩個重要的方法focusGained(FocusEvent e)
和void focusLost(FocusEvent e)
有助於找出哪個組件重點關注。
相關問題
- 1. 如何找到關注哪個控件?
- 2. 如何查找組件屬於哪個面板?
- 3. 如何找到哪個NSTextfield專注於
- 4. Swing如何確定在按Tab時哪個組件需要關注?
- 5. 如何理解哪個控件已經被重點關注?
- 6. 如何設置哪個控件關注應用程序啓動
- 7. 如何指定窗體打開時應關注哪個控件?
- 8. 如何找出哪些組件在GAC
- 9. 如何查找哪些組件發生衝突?
- 10. 如何查找,由哪個模板圖層組成的對象?
- 11. 如何查找多個與同一個組關聯的記錄?
- 12. 如何使用Java查找文件屬於哪個文件夾?
- 13. 如何找出哪個TextView連接到哪個數組?
- 14. 查找短期存在的句柄與哪個文件關聯
- 15. 查找哪些BroadcastReceivers已註冊?
- 16. FullAjaxExceptionHandler - 找出哪個組件導致ViewExpiredException?
- 17. 查找哪個asp.net組件具有焦點
- 18. 查找哪一個運動事件上
- 19. phpMyAdmin在哪個文件位置查找?
- 20. FileInputStream在哪個文件夾中查找?
- 21. 如何查找「文本」存在於哪個文件中?
- 22. 查找關注者和關注者數Cakephp
- 23. Mysql Query查找文章關注者/最後沒有關注者
- 24. 你如何找到哪個.lib文件使用哪個函數?
- 25. 查找關聯數組
- 26. 如何查找框架中的組件
- 27. 如何在IWorkbenchPart中查找組件?
- 28. 如何動態查找連接組件
- 29. 如何在組件中查找元素?
- 30. 如何爲條件查找值數組