Ab sofort verwende ich den unten stehenden Code, um zwei Tastendrücke zu erkennen. Das heißt, Strg + F (oder) Shift + 1 ... Etc,So erkennen Sie 3 Tastendrücke in SWT KeyListener
CCombo comboBox = this.cellEditor.getViewer().getCCombo();
KeyAdapter keyAdapter = new KeyAdapter()
{
@Override
public void keyPressed(final KeyEvent evt)
{
// KeyPreferenceUtils is used to get the eclipse workbench key preference values.
int keyCode = KeyPreferenceUtils.getKeyValue();
if ((evt.stateMask == SWT.CTRL) || (evt.stateMask == SWT.ALT) || (evt.stateMask == SWT.SHIFT) || (evt.stateMask == SWT.COMMAND))
{
String pressedKey = Action.convertAccelerator(evt.stateMask + evt.keyCode);
int pressedKeyValue = Action.convertAccelerator(pressedKey);
if (pressedKeyValue == keyCode)
{
comboBox.setListVisible(true);
}
}
else if (evt.keyCode == keyCode)
{
comboBox.setListVisible(true);
}
}
};
comboBox.addKeyListener(keyAdapter);
Nun mein Problem ist, ich 3 Tastendrücke erfassen möchten. Ie, Strg + Shift + 2 oder einige Tastenkombinationen.
das obige Verfahren schwer Codes die Taste drücken, um ‚Strg‘/‚Alt‘/‚Shift‘/etc .. Wenn der Benutzer eine beliebige Taste andere tritt als das wird mir diese Logik nicht helfen. Ist es möglich, es generisch zu machen? d. h. für 3 vom Benutzer eingegebene Schlüssel, die geparst werden sollen? –
Sie können immer alle Statusmaskenflags testen und zählen, wie viele gesetzt sind. – BevynQ