如何限制 Java 中 JTextField 内的字符数?
awtjavaobject oriented programmingprogrammingswing
JTextFeld 是最重要的组件之一,它允许用户以单行格式输入文本值。我们可以限制用户可以输入到 JTextField 中的字符数,这可以通过使用 PlainDocument 类来实现。
在下面的示例中,我们可以使用 PlainDocument 类来实现逻辑,因此我们可以允许用户最多输入 10 个字符,如果输入超过 10 个字符,则不允许输入。
示例
import java.awt.*; import javax.swing.*; import javax.swing.text.*; 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 JTextFieldLimitTest extends JFrame { JTextField textfield; JLabel label; public static void main(String[]args){ new JTextFieldLimitTest().GUI(); } public void GUI() { setLayout(new FlowLayout()); label = new JLabel("max 10 chars"); textfield = new JTextField(15); add(label); add(textfield); textfield.setDocument(new JTextFieldLimit(10)); setSize(350,300); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } }