3
有沒有辦法在textArea
中寫入而不用去LCDUI窗口? 我想在我的LWUIT應用程序中編輯我的textArea
,但每次我嘗試這樣做時,應用程序都會將我發送到LCDUI窗口。LWUIT TextArea問題
有沒有辦法在textArea
中寫入而不用去LCDUI窗口? 我想在我的LWUIT應用程序中編輯我的textArea
,但每次我嘗試這樣做時,應用程序都會將我發送到LCDUI窗口。LWUIT TextArea問題
要禁用LWUIT編輯控件觸發器,您可以使用以下代碼。
textArea.setNativeTextboxTrigger(false);
您需要實現在LWUIT文本區的源代碼下面的代碼
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);
}
}
}
};
}
我不找'textArea.setNativeTextboxTrigger();'的LWUIT API中 – Mun0n
檢查,現在我已經改變答案 –
好的,我會檢查出來。 Thanks @Neel – Mun0n