我有一些Swing控件,它没有显示它是否有焦点(实际上,这是PCanvas
,但可能这没关系)。
现在我想让这个控件显示它是否聚焦。
我期待两种选择:
1)Swing中的任何控件都能显示焦点,但默认情况下此功能为OFF。然后如何打开它?
2)默认情况下,控件不显示焦点,那么怎么做?我可以覆盖paintBorder
,但是我应该做些什么吗?
答案 0 :(得分:1)
为此,您可以使用FocusListener
例如:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Example extends JFrame {
public Example() {
JButton button = new JButton("btn");
add(button,BorderLayout.WEST);
JTextField field = new JTextField(5);
field.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent arg0) {
((JTextField)arg0.getComponent()).setBorder(BorderFactory.createLineBorder(Color.RED));
}
@Override
public void focusLost(FocusEvent arg0) {
((JTextField)arg0.getComponent()).setBorder(null);
}
});
add(field,BorderLayout.EAST);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
new Example();
}
}