查看完整版本: 可以幫我看看這一段程式碼可以嗎關於限定長度
頁: [1]

a1212xzxz 發表於 2009-12-5 12:21 PM

可以幫我看看這一段程式碼可以嗎關於限定長度

可以幫我說明一下嗎?
程式碼是什麼意思呢
有一些不太懂

class NumericTextLimit extends PlainDocument {
        private int limit;
     
        NumericTextLimit(int limit) {
          super();   
          this.limit = limit;
        }
        public void insertString (int offset, String str, AttributeSet attr)
            throws BadLocationException
        {
          if (str == null) return;
          if ((getLength() + str.length()) <= limit) {
            //當輸入值合乎條件時才呼叫 super.insertString() 去改寫 Document 的 data.
            super.insertString(offset, str, attr);
          } else {
            getToolkit().beep();
           return;
          }
        }
      } // end of inner class NumericTextLimit

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

gogopkman 發表於 2009-12-6 02:33 AM

哪些地方不懂?  可以標出來討論討論

javanaruto 發表於 2009-12-12 12:30 AM

我看到的程式邏輯如下, 不知有沒有回答你的問題:
1. new NumericTextLimit class 給你要限制顯示的長度(limit)
2. 呼叫insertString method時, 判斷總字數是否超出limit
   a.沒有的話就加上新的字串
     b.有的話就嗶一聲

peter0422 發表於 2009-12-31 05:55 PM

哪些地方不懂?  可以標出來討論討論

csihcs 發表於 2010-1-5 02:43 AM


class NumericTextLimit extends PlainDocument {
// 宣告類別 NumericTextLimit 繼承 PlainDocument
    private int limit;
    // 存取權限私有,物件屬性 limit
    NumericTextLimit(int limit) {
    // 存取權限預設,建構子, 需求參數
        // 型態 int 賦予名稱 limit
    // 附註:因為有宣告建構子,編譯器將不自動加入預設建構子
        super();
        // 呼叫父類別之預設建構子
        this.limit = limit;
        // 設定本物件屬性 limit 值為建構子參數 limit 值
    } // 建構子結尾
    public void insertString (int offset, String str, AttributeSet attr)
    // 存取權限公眾,物件方法 insertString, 需求參數
        // 型態 int 賦予名稱 offset,
        // 型態 String 賦予名稱 str,
        // 型態 AttributeSet 賦予名稱 attr
        throws BadLocationException {
        // 宣告可能會丟出 BadLocationException 例外
    // 附註:因為父類別有相同的方法宣告,因此這項方法為覆寫(override)
        // 故存取權限不得低於父類別宣告
        // 宣告可能丟出的例外不能廣於父類別宣告
        if (str == null) return;
        // 判斷當 str 為 null 時,結束本次呼叫
        if ((getLength() + str.length()) <= limit) {
            // 判斷當 getLength() + str 長度未超過物件屬性 limit 時,做以下動作
            // 猜測 getLength() 為取得目前原有字串長度
            super.insertString(offset, str, attr);
            // 呼叫父類別的方法 insertString
        } else {
            // 上述判斷結果為假時,做以下動作
            getToolkit().beep();
            // 呼叫 getToolkit().beep();
            // 猜測 getToolkit() 為取得工作包
            // beep() 為發出警告
            return;
            // 結束本次呼叫
        } // if 結尾
    } // 方法 insertString 結尾
} // 類別結尾
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>
頁: [1]