【发布时间】:2014-05-10 13:14:43
【问题描述】:
嘿,我有一个面板类,其中有两个面板,其中一个面板有文本字段。我想在注意力集中时执行一个动作。 面板被添加到主框架上。
【问题讨论】:
标签: java swing focus awt focuslistener
嘿,我有一个面板类,其中有两个面板,其中一个面板有文本字段。我想在注意力集中时执行一个动作。 面板被添加到主框架上。
【问题讨论】:
标签: java swing focus awt focuslistener
有一些视觉线索有助于了解哪个组件具有焦点,例如文本字段中的活动光标。要使用FocusListener 接口并为了监听键盘获得或失去焦点,需要使用组件的addFocusListener() 方法向组件注册从类创建的侦听器对象。两个重要的方法focusGained(FocusEvent e) 和void focusLost(FocusEvent e) 有助于找到关注的组件。
【讨论】:
使用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() 方法。
【讨论】:
使用 API
JFrame.getFocusOwner()
这将返回对具有焦点的组件的引用
你也可以检查....
KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()
要进行修改,只需将 FocusListener 添加到您各自的组件中,并为您的特定动作实现接口。
【讨论】: