java 限制文本框长度_java中限制文本框输入长度的显示(转载)

我最近在网上看到一篇文章很不错,对于限制文本框输入长度的显示很方便

JAVA不像C#能够有maxLength这个属性对文本框的输入长度进行控制,但也是有办法实现相应的功能的。

写一个MyDocument类,继承PlainDocument。重写insertString(int offset,String str,AttributeSet a)方法。

方法如下:

package com.dao;

import javax.swing.text.BadLocationException;

import javax.swing.text.PlainDocument;

public class MyDocument extends PlainDocument {

private int maxLength;

public MyDocument(int newMaxLength)     {

super();         maxLength=newMaxLength;

}     public MyDocument()     {

this(10);     }

public void insertString(int offset,String str,javax.swing.text.AttributeSet a) throws BadLocationException     {

if(getLength()+str.length()>maxLength)         {             return;         }

else         {             super.insertString(offset, str,a);         }     }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java ,可以使用 JTextField 组件来实现文本框输入限制。下面是一些限制的例子: 1. 限制文本框只能输入数字 ```java JTextField textField = new JTextField(); textField.setDocument(new NumberOnlyDocument()); ``` 其 NumberOnlyDocument 是一个自定义的 Document 类,代码如下: ```java import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import javax.swing.text.DocumentFilter; public class NumberOnlyDocument extends DocumentFilter { @Override public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException { if (string == null) { return; } String newValue; Document doc = fb.getDocument(); StringBuilder sb = new StringBuilder(); sb.append(doc.getText(0, doc.getLength())); sb.insert(offset, string); newValue = sb.toString(); if (newValue.matches("\\d*")) { super.insertString(fb, offset, string, attr); } } @Override public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException { if (text == null) { return; } String newValue; Document doc = fb.getDocument(); StringBuilder sb = new StringBuilder(); sb.append(doc.getText(0, doc.getLength())); sb.replace(offset, offset + length, text); newValue = sb.toString(); if (newValue.matches("\\d*")) { super.replace(fb, offset, length, text, attrs); } } } ``` 2. 限制文本框只能输入特定长度的字符串 ```java JTextField textField = new JTextField(10); textField.setDocument(new LengthLimitedDocument(10)); ``` 其 LengthLimitedDocument 是一个自定义的 Document 类,代码如下: ```java import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; public class LengthLimitedDocument extends PlainDocument { private int limit; public LengthLimitedDocument(int limit) { this.limit = limit; } @Override public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { if (getLength() + str.length() <= limit) { super.insertString(offs, str, a); } } @Override public void replace(int offs, int len, String str, AttributeSet a) throws BadLocationException { if (getLength() - len + str.length() <= limit) { super.replace(offs, len, str, a); } } } ``` 这些代码可以在文本框实现输入限制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值