嘿我有一个面板类,其中有两个面板,其中一个面板有文本字段。我想在集中注意力时执行一个动作。 面板添加在主框架上。
答案 0 :(得分:2)
使用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 :(得分:1)
使用api
JFrame.getFocusOwner()
这将返回对焦点
的组件的引用你也可以检查......
KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()
要进行修改,只需将FocusListener添加到相应的Component,然后实现特定acitons的界面。
答案 2 :(得分:1)
有视觉线索有助于了解哪个组件具有焦点,例如文本字段中的活动光标。要使用FocusListener
接口并且为了监听键盘获得或失去焦点,从类创建的侦听器对象需要使用组件的addFocusListener()
方法向组件注册。两个重要的方法focusGained(FocusEvent e)
和void focusLost(FocusEvent e)
有助于找到哪个组件是重点。