Sorunuza yazdığım yoruma rağmen, daha iyi olacağı olayın KeyUpEvent
olduğu anlaşılıyor. Bu durumda doğru KeyCode
'u alabilir ve değiştiriciyi test edebilirsiniz. Aynı durum kullanıcı aşağı CTRL anahtarı tutuyor olarak, yalnızca tek bir KeyUpEvent
olması gerekirken onları ENTER tuşuna bekleyen KeyDownEvents
birden alacak, ancak, KeyDownEvent
için de geçerlidir.
Ayrıca bu çözüm, 'da charCode() == 10
için test edilmekten daha fazla tarayıcılar arası uyumlu görünüyor. Firefox, charCode'u CRTL + ENTER ENTER için ayarlamıyor gibi görünmüyor.
package com.test.gwt.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyDownEvent;
import com.google.gwt.event.dom.client.KeyDownHandler;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class GwtTest implements EntryPoint {
private TextArea messages;
/**
* This is the entry point method.
*/
public void onModuleLoad() {
// Add the textbox to receive events and a place to write messages
final TextBox nameField = new TextBox();
nameField.setText("");
messages = new TextArea();
messages.setText("");
RootPanel.get().add(nameField);
RootPanel.get().add(messages);
messages.setSize("75%", "400px");
// Focus the cursor on the name field when the app loads
nameField.setFocus(true);
nameField.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(KeyUpEvent event) {
printMessage("KeyUpEvent",
event.getNativeKeyCode(),
event.isAnyModifierKeyDown(),
event.isControlKeyDown());
}
});
nameField.addKeyPressHandler(new KeyPressHandler() {
@Override
public void onKeyPress(KeyPressEvent event) {
printMessage("KeyPressEvent",
event.getCharCode(),
event.isAnyModifierKeyDown(),
event.isControlKeyDown());
}
});
nameField.addKeyDownHandler(new KeyDownHandler() {
@Override
public void onKeyDown(KeyDownEvent event) {
printMessage("KeyDownEvent",
event.getNativeKeyCode(),
event.isAnyModifierKeyDown(),
event.isControlKeyDown());
}
});
}
public void printMessage(String eventName, int code, boolean modifier, boolean control) {
final NumberFormat formatter = NumberFormat.getDecimalFormat();
String message = eventName + " - Char Code: " + formatter.format(code) + ". ";
if(code == KeyCodes.KEY_ENTER) {
message += "Key is ENTER. ";
}
if(modifier)
message += "Modifier is down. ";
if(control)
message += "CTRL is down. ";
messages.setText(messages.getText() + "\n\n" + message);
}
}
sen kullanımı vardır olay: İşte
Chrome, IE8 ve FF8 içinde test etmek için kullanılan bazı koddur? Anahtarları yakalamaya çalışırken KeyPressEvent işlemek en iyisidir. –KeyPressEvent'i KeyPressHandler – maks
ile yakalamaya çalışıyorum Bu, JS anahtar olaylarını test etmek için güzel bir sayfadır: http://www.quirksmode.org/js/keys.html. En altta anahtar olayları test edebilirsiniz; Birkaç farklı tarayıcıyla test etmeniz gerekecek. GWT değil ama yararlı buldum. –