关于创建java屏幕键盘的建议

时间:2012-06-14 16:55:32

标签: java swing netbeans

我想创建一个屏幕键盘,以便当文本字段聚焦时,键盘会出现在屏幕上,当焦点丢失或者在屏幕外点击时键盘应该消失。

这不是问题,问题是我不确定应该用什么来创建这样的键盘。我无法使用jFrame,因为如果我在键盘窗口外单击,那么键盘会转到后台并且不会关闭。我也无法使用jDialog,因为它不允许我们在窗口外单击。

我还希望能够显示一个文本框,其中包含键盘实时输入的内容(因为我点击屏幕键盘上的键应显示在文本框中)。我正在netbeans中执行此程序,因此如果您能记住这一点,那将会很有帮助。

1 个答案:

答案 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();
            }
        });
    }
}