2011-09-12 101 views
3

有沒有辦法在textArea中寫入而不用去LCDUI窗口? 我想在我的LWUIT應用程序中編輯我的textArea,但每次我嘗試這樣做時,應用程序都會將我發送到LCDUI窗口。LWUIT TextArea問題

回答

2

要禁用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); 
        }     
       } 
      } 
     }; 
    } 
+0

我不找'textArea.setNativeTextboxTrigger();'的LWUIT API中 – Mun0n

+0

檢查,現在我已經改變答案 –

+0

好的,我會檢查出來。 Thanks @Neel – Mun0n