在SWT中,键盘事件由KeyEvent类表示。 我们可以使用KeyListener来接收和处理KeyEvent 。
KeyEvent类具有三个成员字段,以提供有关事件生成的密钥的信息。
1)字符–显示所按下键的字符值。
2)stateMask –检查当前是否有其他按键被按下。 (通常用于捕获CTRL,ALT和SHIFT键)。
3)keyCode –显示所按下键的数字值。
我们可以将KeyListener()或KeyAdapter()附加到小部件控件上,以跟踪键盘事件。
"widget control".addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
}
});
检查当前是否按了ALT键
if ((e.stateMask & SWT.ALT) != 0)
检查是否按了退格键
if(e.keyCode == SWT.BS)
PS请检查SWT类的其他键盘事件。
检查是否按下任何字符
if(e.keyCode >=97 && e.keyCode <=122)
检查是否按了任何数字
if(e.keyCode >=48 && e.keyCode <=57)
这是如何演示如何捕获键盘事件的完整资料。
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class SWTKeyEvent
{
public static void main (String [] args) {
Display display = new Display ();
Shell shell = new Shell(display);
shell.setText("SWT KeyEvent Example");
shell.setLayout(new FillLayout());
Button button = new Button(shell, SWT.CENTER);
button.setText("Type Something");
button.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
String string = "";
//check click together?
if ((e.stateMask & SWT.ALT) != 0) string += "ALT - keyCode = " + e.keyCode;
if ((e.stateMask & SWT.CTRL) != 0) string += "CTRL - keyCode = " + e.keyCode;
if ((e.stateMask & SWT.SHIFT) != 0) string += "SHIFT - keyCode = " + e.keyCode;
if(e.keyCode == SWT.BS)
{
string += "BACKSPACE - keyCode = " + e.keyCode;
}
if(e.keyCode == SWT.ESC)
{
string += "ESCAPE - keyCode = " + e.keyCode;
}
//check characters
if(e.keyCode >=97 && e.keyCode <=122)
{
string += " " + e.character + " - keyCode = " + e.keyCode;
}
//check digit
if(e.keyCode >=48 && e.keyCode <=57)
{
string += " " + e.character + " - keyCode = " + e.keyCode;
}
if(!string.equals(""))
System.out.println (string);
}
});
shell.open();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}
}
标签: swt
翻译自: https://mkyong.com/swt/swt-how-to-capture-keyboard-event/