首頁 >Java >java教程 >如何有效限制 JTextField 輸入只能輸入整數?

如何有效限制 JTextField 輸入只能輸入整數?

Susan Sarandon
Susan Sarandon原創
2024-12-09 07:06:09899瀏覽

How to Effectively Restrict JTextField Input to Only Integers?

將 JTextField 輸入限制為整數

在 JTextField 控制項中將使用者輸入限制為正整數一直是程式設計中的常見問題。雖然您嘗試使用 KeyListener 來實現此目的,但還有更有效的方法。

與依賴 KeyListener 相比,實作 DocumentFilter具有以下幾個優點:

  • 它確保輸入文字組件的所有數據,無論使用何種輸入方法(鍵盤、複製貼上等),都符合指定的
  • 除了數字範圍檢查之外,它還允許進行其他驗證,例如驗證資料類型(例如,確保輸入的資料可以解析為整數)和資料長度(例如,強制執行最大數量的資料)數字)。

要使用DocumentFilter 實現此目的,請考慮以下內容範例:

import javax.swing.text.PlainDocument;
import javax.swing.text.DocumentFilter;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;

class IntDocumentFilter extends PlainDocument {

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

        if (string == null || string.isEmpty()) {
            super.insertString(fb, offset, string, attr);
        } else {
            try {
                Integer.parseInt(string);
                super.insertString(fb, offset, string, attr);
            } catch (NumberFormatException e) {
                // warn the user and don't allow the insert
            }
        }
    }

    @Override
    public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {

        if (text == null || text.isEmpty()) {
            super.replace(fb, offset, length, text, attrs);
        } else {
            try {
                Integer.parseInt(text);
                super.replace(fb, offset, length, text, attrs);
            } catch (NumberFormatException e) {
                // warn the user and don't allow the insert
            }
        }
    }
}

要使用此過濾器,請實例化它並將其設定在與JTextField 關聯的PlainDocument物件上:

JTextField textField = new JTextField();
PlainDocument doc = (PlainDocument) textField.getDocument();
doc.setDocumentFilter(new IntDocumentFilter());

此實作:

  • 檢查輸入字串是否可以解析為整數。
  • 允許插入或取代有效的整數輸入,同時忽略任何非整數輸入。
  • 處理使用者嘗試插入 null 或空字串的情況。

請記住,這些技術可確保輸入符合所需的約束,讓您可以控制 JTextField 接受的資料類型。

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

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