首頁 >Java >java教程 >在 Java 中如何限制 JTextField 僅接受數位輸入?

在 Java 中如何限制 JTextField 僅接受數位輸入?

Linda Hamilton
Linda Hamilton原創
2024-12-22 19:05:16785瀏覽

How Can I Restrict a JTextField to Accept Only Numeric Input in Java?

在 JTextField 中僅接受數字值

可以透過使用 JFormattedTextField 類別來限制 JTextField 僅接受數字值。此類支援使用 Format 物件驗證不同的資料類型。

使用 JFormattedTextField 進行數位輸入

JFormattedTextField 提供了用於驗證資料和提供視覺回饋的靈活解決方案。以下是如何使用它進行數位輸入:

NumberFormat integerNumberInstance = NumberFormat.getIntegerInstance();
ImprovedFormattedTextField integerFormattedTextField = new ImprovedFormattedTextField(integerNumberInstance, 100);

在此範例中:

  • integerNumberInstance 是專門用於整數的 NumberFormat 物件。
  • ImprovedFormattedTextField 是一個擴展JFormattedTextField 的自定義JTextField,提供增強的

用於完整解析的自定義格式化程序

為了確保只接受完整的數值,我們可以使用ParseAllFormat類別作為格式的裝飾器object:

final Format format = new ParseAllFormat(integerNumberInstance);

此包裝格式確保如果輸入部分數值,則該值將是被拒絕。

ImprovedFormattedTextField 的其他功能

ImprovedFormattedTextField 類別提供了幾個附加功能:

  • 插入符號位置:輸入值後更正插入符號位置以維護使用者體驗。
  • 按鍵綁定覆蓋:禁止不必要的操作,例如使用ENTER
  • 用法範例
  • 用法範例

    用法範例
    JPanel panel = new JPanel(new BorderLayout());
    panel.add(integerFormattedTextField, BorderLayout.WEST);
    
    JButton button = new JButton(new AbstractAction() {
        {
            integerFormattedTextField.addPropertyChangeListener("editValid", event -> setEnabled((Boolean) event.getNewValue()));
            putValue(Action.NAME, "Show Current Value");
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null, "The current value is [" + integerFormattedTextField.getValue() + "]");
        }
    });

    用法範例用法範例用法範例用法範例要將數位輸入功能合併到GUI中:此設定初始化數位文字領域具有改進的行為。此按鈕顯示值,並且僅在輸入有效時才啟用。

    以上是在 Java 中如何限制 JTextField 僅接受數位輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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