SWT –キーボードイベントをキャプチャする方法
SWTでは、キーボードイベントはKeyEventクラスで表されます。 KeyListenerを使用して、KeyEventを受信して処理できます。
KeyEventクラスには、イベントによって生成されたキーに関する情報を提供する3つのメンバーフィールドがあります。
1)文字–押されたキーのchar値を表示します。
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)
BACKSPACEキーが押されているか確認してください
if(e.keyCode == SWT.BS)
P.S Please Check SWT class for other keyboard events.
characterが押されているかどうかを確認します
if(e.keyCode >=97 && e.keyCode <=122)
digitが押されているかどうかを確認します
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 (); } }