Question Lwuit TextArea
-
29-10-2019 - |
Question
Y a-t-il un moyen d'écrire dans un textArea
sans aller à une fenêtre LCDUI? Je veux modifier mon textArea
Dans mon application LWuit, mais chaque fois que j'essaie de le faire, l'application m'envoie dans une fenêtre LCDUI.
La solution
Pour désactiver le déclencheur de contrôle LWuit Edit, vous pouvez utiliser le code suivant.
textArea.setNativeTextboxTrigger(false);
Vous devez implémenter le code suivant dans le code source LWuit TextArea
static final String CLIENT_PROPERTY_FIRE_ACTION_TIMES = "FIRE-ACTION-TIMES";
static final String CLIENT_PROPERTY_DEAFULT_TEXT = "DEFAULT-TEXT";
public void setNativeTextboxTrigger(boolean enable) {
registerNativeTextboxTriggerEvent = enable;
static final String CLIENT_PROPERTY_FIRE_ACTION_TIMES = "FIRE-ACTION-TIMES";
static final String CLIENT_PROPERTY_DEAFULT_TEXT = "DEFAULT-TEXT";
try {
if( registerNativeTextboxTriggerEvent ) {
String text = null != ( text = getText() ) ? text : "";
this.putClientProperty(CLIENT_PROPERTY_DEAFULT_TEXT, text);
this.putClientProperty(CLIENT_PROPERTY_FIRE_ACTION_TIMES, String.valueOf(0));
final UIManager m = UIManager.getInstance();
setNativeCommandsText(m.localize("ok", "OK"), m.localize("cancel", "Cancel"));
this.addActionListener(nativeTriggerListener = getNativeTriggerActionListener());
} else {
this.putClientProperty(CLIENT_PROPERTY_DEAFULT_TEXT, null);
this.putClientProperty(CLIENT_PROPERTY_FIRE_ACTION_TIMES, null);
setNativeCommandsText(null, null);
if( null != nativeTriggerListener ) {
this.removeActionListener(nativeTriggerListener);
nativeTriggerListener = null;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
ActionListener getNativeTriggerActionListener() {
return new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if( evt.getSource() instanceof TextArea ) {
final TextArea tar = (TextArea)evt.getSource();
final String textEntered = tar.getText().trim();
final String defaultText = (String)tar.getClientProperty(CLIENT_PROPERTY_DEAFULT_TEXT);
int fireActionTimes = Integer.parseInt((String)tar.getClientProperty(CLIENT_PROPERTY_FIRE_ACTION_TIMES));
++fireActionTimes;
int value = fireActionTimes % 2;
if( 0 == value ) {
fireActionTimes = 0;
if( textEntered.equals("") || textEntered.toUpperCase().equals(defaultText.toUpperCase())) {
tar.setText(defaultText);
}
triggeredNativeToLwuit(tar);
} else
//Switching to native edit screen
if( 0 < value ) {
if( textEntered.toUpperCase().equals(defaultText.toUpperCase()) ) {
tar.setText("");
}
triggeredLwuitToNative(tar);
}
}
}
};
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow