• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czy da się jakoś ograniczyć liczbę znaków, które można wpisać w TextField?

Object Storage Arubacloud
0 głosów
255 wizyt
pytanie zadane 17 września 2020 w Java przez dunaj Użytkownik (950 p.)
Cześć

Jak w temacie, czy da się ograniczyć (w obrębie textfielda) liczbę znaków, którą można do niego wpisać?

1 odpowiedź

+1 głos
odpowiedź 17 września 2020 przez Wiciorny Ekspert (270,170 p.)
wybrane 17 września 2020 przez dunaj
 
Najlepsza

Pewnie, że można https://stackoverflow.com/questions/3519151/how-to-limit-the-number-of-characters-in-jtextfield
tutaj przykład 

https://www.rgagnon.com/javadetails/java-0198.html kolejne limitowanie, jeśli nie korzystasz z jakiejś biblioteki ...
 

public class JTextFieldLimit extends JTextField {
    private int limit;

    public JTextFieldLimit(int limit) {
        super();
        this.limit = limit;
    }

    @Override
    protected Document createDefaultModel() {
        return new LimitDocument();
    }

    private class LimitDocument extends PlainDocument {

        @Override
        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);
            }
        }       

    }

bardziej dynamiczne rozwiązanie, nie tworząc np klasy dodatkowej 

 

  textField = new JTextField();
    textField.addKeyListener(new KeyAdapter() {
        @Override
        public void keyTyped(KeyEvent e) {
            if (txtGuess.getText().length() >= 3 ) // limit to 3 characters
                e.consume();
        }
    });

możesz pokombinować i skorzystać z tego co wyżej :) w razie "W" pytaj 

1
komentarz 17 września 2020 przez dunaj Użytkownik (950 p.)

Dzięki, akurat chodziło mi o javafxowy text field ale z JtextFieldem jest analogicznie.

Poniżej rozwiązanie bez tworzenia nowej klasy dla TextField (javafx):

textField.textProperty().addListener((observable, oldValue, newValue) -> {
                if (!newValue.isEmpty()) {
                    if (newValue.length() > MAX_LENGTH) {
                        textField.deleteNextChar();
                    }
}
}

 

Podobne pytania

0 głosów
1 odpowiedź 96 wizyt
0 głosów
1 odpowiedź 607 wizyt
0 głosów
3 odpowiedzi 190 wizyt
pytanie zadane 7 maja 2016 w Java przez alus152 Bywalec (2,690 p.)

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...