第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

限制JTextField中的字符數

限制JTextField中的字符數

肥皂起泡泡 2019-11-18 10:27:10
我想設置最大長度JTextField,這樣您輸入的字符數不能超過限制。這是我到目前為止的代碼...    textField = new JTextField();    textField.setBounds(40, 39, 105, 20);    contentPane.add(textField);    textField.setColumns(10);有什么簡單的方法可以限制字符數?
查看完整描述

3 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

您可以執(zhí)行以下操作(從此處獲取):


import java.awt.FlowLayout;


import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextField;

import javax.swing.text.AttributeSet;

import javax.swing.text.BadLocationException;

import javax.swing.text.PlainDocument;


class JTextFieldLimit extends PlainDocument {

  private int limit;

  JTextFieldLimit(int limit) {

    super();

    this.limit = limit;

  }


  JTextFieldLimit(int limit, boolean upper) {

    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(offset, str, attr);

    }

  }

}


public class Main extends JFrame {

  JTextField textfield1;


  JLabel label1;


  public void init() {

    setLayout(new FlowLayout());

    label1 = new JLabel("max 10 chars");

    textfield1 = new JTextField(15);

    add(label1);

    add(textfield1);

    textfield1.setDocument(new JTextFieldLimit(10));


    setSize(300,300);

    setVisible(true);

  }

}

編輯:看看這個以前的SO職位。您可以攔截按鍵事件,并根據文本字段中當前的字符數添加/忽略它們。


查看完整回答
反對 回復 2019-11-18
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

自從DocumentFilterJava 1.4中引入以來,Document就已經覆蓋了重寫的 需求。


DocumentFilter提供了一種Document在實際到達之前過濾傳遞給的內容的方法。


這些使字段可以繼續(xù)維護它需要的文檔,同時提供過濾來自用戶的輸入的手段。


import java.awt.EventQueue;

import java.awt.GridBagLayout;

import javax.swing.JFrame;

import javax.swing.JPasswordField;

import javax.swing.JTextField;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

import javax.swing.text.AbstractDocument;

import javax.swing.text.AttributeSet;

import javax.swing.text.BadLocationException;

import javax.swing.text.DocumentFilter;


public class LimitTextField {


    public static void main(String[] args) {

        new LimitTextField();

    }


    public LimitTextField() {

        EventQueue.invokeLater(new Runnable() {

            @Override

            public void run() {

                try {

                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {

                    ex.printStackTrace();

                }


                JTextField pfPassword = new JTextField(20);

                ((AbstractDocument)pfPassword.getDocument()).setDocumentFilter(new LimitDocumentFilter(15));


                JFrame frame = new JFrame("Testing");

                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                frame.setLayout(new GridBagLayout());

                frame.add(pfPassword);

                frame.pack();

                frame.setLocationRelativeTo(null);

                frame.setVisible(true);

            }

        });

    }


    public class LimitDocumentFilter extends DocumentFilter {


        private int limit;


        public LimitDocumentFilter(int limit) {

            if (limit <= 0) {

                throw new IllegalArgumentException("Limit can not be <= 0");

            }

            this.limit = limit;

        }


        @Override

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

            int currentLength = fb.getDocument().getLength();

            int overLimit = (currentLength + text.length()) - limit - length;

            if (overLimit > 0) {

                text = text.substring(0, text.length() - overLimit);

            }

            if (text.length() > 0) {

                super.replace(fb, offset, length, text, attrs); 

            }

        }


    }


}


查看完整回答
反對 回復 2019-11-18
  • 3 回答
  • 0 關注
  • 565 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號