Я немного изменил вашу программу для вашей работы, посмотрите:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class ButtonDemo extends JFrame {
public static void main(String args[]){
JFrame jfrm = new JFrame("Sample program");
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setLocationByPlatform(true);
Container content = jfrm.getContentPane();
content.setBackground(Color.red);
jfrm.setLayout(null);
jfrm.setBounds(250, 150, 400, 400);
JTextField text = new JTextField();
Font font1 = new Font("Courier",Font.BOLD,12);
text.setFont(font1);
text.setBounds(50, 15, 100, 30);
AbstractDocument abdoc;
Document doc = text.getDocument();
if (doc instanceof AbstractDocument)
{
abdoc = (AbstractDocument) doc;
abdoc.setDocumentFilter(new DocumentSizeFilter(4));
}
JButton button1 = new JButton("PROGRAM");
button1.setFont(font1);
button1.setBounds(250, 15, 100, 40);
button1.setBackground (Color.white);
JButton button3 = new JButton("EXIT");
button3.setBounds(250, 115, 100, 40);
button3.setBackground (Color.cyan);
button1.setForeground (Color.red);
JButton button2 = new JButton("USER");
button2.setBounds(250, 65, 100, 40);
button2.setBackground (Color.WHITE);
jfrm.add(button1);
jfrm.add(button2);
jfrm.add(button3);
jfrm.add(text);
jfrm.setVisible(true);
jfrm.setResizable(false);
}
}
class DocumentSizeFilter extends DocumentFilter {
private int max_Characters;
private boolean DEBUG;
public DocumentSizeFilter(int max_Chars) {
max_Characters = max_Chars;
DEBUG = false;
}
public void insertString(FilterBypass fb
, int offset
, String str
, AttributeSet a)
throws BadLocationException {
if (DEBUG) {
System.out.println("In DocumentSizeFilter's insertString method");
}
if ((fb.getDocument().getLength() + str.length()) <= max_Characters)
super.insertString(fb, offset, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
public void replace(FilterBypass fb
, int offset, int length
, String str, AttributeSet a)
throws BadLocationException {
if (DEBUG) {
System.out.println("In DocumentSizeFilter's replace method");
}
if ((fb.getDocument().getLength() + str.length()
- length) <= max_Characters)
super.replace(fb, offset, length, str, a);
else
Toolkit.getDefaultToolkit().beep();
}
}
Просто добавьте сюда, abdoc.setDocumentFilter(new DocumentSizeFilter(4));
Максимальное количество символов, которое вы хотели бы иметь JTextField
,Замените 4 на любое число по вашему выбору.
Надеюсь, это может как-то помочь.
С уважением