我想设置一个最大长度,以JTextField使你输入的字符不能超过限制。这是我到目前为止的代码…
JTextField
textField = new JTextField(); textField.setBounds(40, 39, 105, 20); contentPane.add(textField); textField.setColumns(10);
有什么简单的方法可以限制字符数?
你可以执行以下操作(从此处获取):
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职位。你可以拦截按键事件,并根据文本字段中的当前字符数添加/忽略它们。