Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Προσπαθω να περιορισω τον αριθμο των χαρακτηρων σε ενα JTextField στην Java αλλα δεν δουλευει ο κωδικας. Εχετε καμια ιδεα?

 

Κλαση JTextFieldClass για τον περιορισμο των χαρακτηρων.

import javax.print.attribute.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class JTextFieldClass extends PlainDocument {
private int limit;

JTextFieldClass(int limit) {
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, (javax.swing.text.AttributeSet) attr);
}
}
}

Κλαση Application

public class Application{
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Application window = new Application();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();}
}
}
);}

public Application() {
initialize();
}

private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 805, 300);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().setLayout(null);
name = new JTextField(12);
name.setDocument(new JTextFieldClass(10));
name.setBounds(183, 84, 122, 20);
frame.getContentPane().add(name);
name.setColumns(10);
}
}

Τον κωδικα τον βρηκα στο StackOverflow αλλα δεν δουλευει(http://stackoverflow.com/questions/3519151/how-to-limit-the-number-of-characters-in-jtextfield)

Δημοσ.
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;

public class JTextFieldLimit extends JTextField {
	private static int limit;

	public JTextFieldLimit(int limit) {
		setLimit(limit);
	}

	public int getLimit() {
		return limit;
	}

	public void setLimit(int limit) {
		this.limit = limit;
	}

	protected Document createDefaultModel() {
		return new LimitedLengthDocument();
	}

	static class LimitedLengthDocument extends PlainDocument {
		public void insertString(int offs, String str, AttributeSet a)
				throws BadLocationException {
			if( str == null )
				return;
			
			if( (getLength() + str.length()) <= limit )
				super.insertString(offs, str, a);
				
		}
	}
}

Και μετά αρχικοποιείς JTextFieldLimit textField = new JTextFieldLimit(16); (για 16 χαρακτήρες limit)

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...