JAVA怎么限制JTextField的输入长度
JAVA怎么限制JTextField的输入长度``比如说我有4个JTextField并列在一起``而每个JTextField只能输入4个字符超过4个就自动TAB切换到下一...
JAVA怎么限制JTextField的输入长度``比如说我有4个JTextField并列在一起``而每个JTextField只能输入4个字符超过4个就自动TAB切换到下一个JTextField```这个功能应该具体怎么实现``应该调用什么方法
展开
3个回答
展开全部
添加个addActionListener啊应该有个onchange事件什么的吧(具体什么的记不到了,太久不用这个了),每改变一个字符就会触发一次,后面的我就不说了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
new JTextField(30);这个30就是文本框最大的输入长度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
package com;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
/**
*
* @author wgq
*
*/
public class ChanckText extends JFrame {
List<MyJTextField> textList = new ArrayList<MyJTextField>();
public static void main(String[] args) {
new ChanckText();
}
public ChanckText() {
MyJTextField text1 = new MyJTextField(1);
MyJTextField text2 = new MyJTextField(2);
MyJTextField text3 = new MyJTextField(3);
MyJTextField text4 = new MyJTextField(4);
this.getContentPane().setLayout(new FlowLayout());
this.getContentPane().add(text1);
this.getContentPane().add(text2);
this.getContentPane().add(text3);
this.getContentPane().add(text4);
this.setSize(new Dimension(600, 400));
this.setVisible(true);
textList.add(text1);// 把所有的文本框添加到集合中,方便设置选中
textList.add(text2);
textList.add(text3);
textList.add(text4);
}
class MyJTextField extends JTextField {
public int id = 0;
public MyJTextField(int id) {
this.id = id;
this.setDocument(new MyProtDocument(this));// 设置文档对象
this.setPreferredSize(new Dimension(100, 25));// 设置文本框大小
}
}
class MyProtDocument extends PlainDocument {
MyJTextField tx = null;
public MyProtDocument(MyJTextField tx) {
this.tx = tx;
}
private static final long serialVersionUID = 1L;
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null) {
return;
}
if (tx.getText().length() >= 4) {// 判断字数
if (tx.id == 4) {
tx.id = 0;
}
textList.get(tx.id).requestFocus(true);// 设置文本框选中
return;
}
char[] upper = str.toCharArray();
super.insertString(offs, new String(upper), a);
}
}
}
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
/**
*
* @author wgq
*
*/
public class ChanckText extends JFrame {
List<MyJTextField> textList = new ArrayList<MyJTextField>();
public static void main(String[] args) {
new ChanckText();
}
public ChanckText() {
MyJTextField text1 = new MyJTextField(1);
MyJTextField text2 = new MyJTextField(2);
MyJTextField text3 = new MyJTextField(3);
MyJTextField text4 = new MyJTextField(4);
this.getContentPane().setLayout(new FlowLayout());
this.getContentPane().add(text1);
this.getContentPane().add(text2);
this.getContentPane().add(text3);
this.getContentPane().add(text4);
this.setSize(new Dimension(600, 400));
this.setVisible(true);
textList.add(text1);// 把所有的文本框添加到集合中,方便设置选中
textList.add(text2);
textList.add(text3);
textList.add(text4);
}
class MyJTextField extends JTextField {
public int id = 0;
public MyJTextField(int id) {
this.id = id;
this.setDocument(new MyProtDocument(this));// 设置文档对象
this.setPreferredSize(new Dimension(100, 25));// 设置文本框大小
}
}
class MyProtDocument extends PlainDocument {
MyJTextField tx = null;
public MyProtDocument(MyJTextField tx) {
this.tx = tx;
}
private static final long serialVersionUID = 1L;
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null) {
return;
}
if (tx.getText().length() >= 4) {// 判断字数
if (tx.id == 4) {
tx.id = 0;
}
textList.get(tx.id).requestFocus(true);// 设置文本框选中
return;
}
char[] upper = str.toCharArray();
super.insertString(offs, new String(upper), a);
}
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询