我想创建一个屏幕键盘,以便当文本字段聚焦时,键盘会出现在屏幕上,当焦点丢失或者在屏幕外点击时键盘应该消失。
这不是问题,问题是我不确定应该用什么来创建这样的键盘。我无法使用jFrame
,因为如果我在键盘窗口外单击,那么键盘会转到后台并且不会关闭。我也无法使用jDialog
,因为它不允许我们在窗口外单击。
我还希望能够显示一个文本框,其中包含键盘实时输入的内容(因为我点击屏幕键盘上的键应显示在文本框中)。我正在netbeans中执行此程序,因此如果您能记住这一点,那将会很有帮助。
答案 0 :(得分:2)
我不确定我是否理解这里的要求,但看看这个例子是否给了你一些想法。
它的基本要点是确保在这个例子中有“空白区域”(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();
}
});
}
}