首頁 >Java >java教程 >DocumentFilter 如何有效地將 JTextField 輸入限制為整數?

DocumentFilter 如何有效地將 JTextField 輸入限制為整數?

Susan Sarandon
Susan Sarandon原創
2024-12-08 10:39:12769瀏覽

How Can a DocumentFilter Effectively Restrict JTextField Input to Integers?

將 JTextField 輸入過濾為整數:使用 DocumentFilter 的有效方法

雖然直觀,但使用鍵偵聽器來驗證 JTextField 中的數字輸入是不夠的。相反,更全面的方法是使用 DocumentFilter。

DocumentFilter:強大的解決方案

DocumentFilter 監視文件的更改,從而更好地控制輸入驗證。它允許您:

  • 在將輸入插入​​文件之前攔截輸入。
  • 執行自訂驗證邏輯並拒絕無效輸入。
  • 處理各種輸入場景,包括剪下、複製和貼上。

實作DocumentFilter

使用 DocumentFilter 實作 MyIntFilter的範例:

class MyIntFilter extends DocumentFilter {
    @Override
    public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) 
        throws BadLocationException {

        Document doc = fb.getDocument();
        StringBuilder sb = new StringBuilder();
        sb.append(doc.getText(0, doc.getLength()));
        sb.insert(offset, string);

        if (test(sb.toString())) {
            super.insertString(fb, offset, string, attr);
        } else {
            // warn the user and don't allow the insert
        }
    }

    private boolean test(String text) {
        try {
            Integer.parseInt(text);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }

    ... // Other overridden methods for replace and remove
}

DocumentFilter

  • 全面驗證:確保所有輸入,無論輸入方法,滿足驗證
  • 多功能
  • :支援各種資料類型、數位格式以及未來的驗證需求。
  • 更清晰的程式碼
  • :集中驗證邏輯,減少程式碼複雜度。

結論

利用DocumentFilter,可以有效地將JTextField輸入限制為整數,確保只輸入有效資料。這是一種強大而可靠的方法,可以解決關鍵聽眾的限制。

以上是DocumentFilter 如何有效地將 JTextField 輸入限制為整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn