我想创建一个屏幕键盘,这样当文本字段获得焦点时,键盘就会出现在屏幕上,而当焦点丢失或在屏幕外单击时,键盘应该会消失。
这不是问题,问题是我不确定我应该用什么来创建这样一个键盘。我不能使用jFrame
,因为如果我在键盘窗口之外单击,键盘将转到后台,并且不会关闭。我也不能使用jDialog
,因为它不允许我们在窗口之外单击。
我也希望能够显示一个文本框与键盘输入的内容实时(当我点击键盘上的键,它应该会出现在文本框中)。我正在用netbeans做这个程序,所以如果你能记住这一点,它将是有帮助的。
发布于 2012-06-14 17:15:43
我不确定我是否理解了这里的要求,但看看这个示例是否给了您一些想法。
它的基本要点是确保组件周围有“空白”(在本例中为OK RED
/ORANGE
,但我们不要在灰色阴影上吹毛求疵)。向其添加鼠标侦听器,并在事件发生时请求焦点(或在您的情况下,隐藏键盘)。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ComponentFocus {
ComponentFocus() {
final JPanel gui = new JPanel(new GridLayout(0,1,15,15));
gui.setFocusable(true);
gui.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent me) {
System.out.println(me);
gui.requestFocus(true);
}
});
gui.setBackground(Color.RED);
gui.addFocusListener(new FocusAdapter(){
@Override
public void focusGained(FocusEvent fe) {
gui.setBackground(Color.ORANGE);
}
@Override
public void focusLost(FocusEvent fe) {
gui.setBackground(Color.RED);
}
});
JButton button1 = new JButton("button1");
gui.add(button1);
JButton button2 = new JButton("button2");
gui.add(button2);
JOptionPane.showMessageDialog(null, gui);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new ComponentFocus();
}
});
}
}
https://stackoverflow.com/questions/11037850
复制相似问题