Avatar billede lsskaarup Nybegynder
01. august 2001 - 13:48 Der er 26 kommentarer og
2 løsninger

Lave en maks. længde på et TextField ?

Hvordan gør man, så en bruger ikke kan skrive mere end f.eks. 16 tegn i et TextField ?
Avatar billede zeptic Nybegynder
01. august 2001 - 13:52 #1
<input type=\"text\" name=\"navn\" maxlength=\"10\">
Avatar billede disky Nybegynder
01. august 2001 - 14:02 #2
zeptic:

Det er html kode ikke java !
Avatar billede zeptic Nybegynder
01. august 2001 - 14:09 #3
disky> ups... jeg har vist været for meget inde i ASP på det seneste....
Avatar billede disky Nybegynder
01. august 2001 - 14:10 #4
hehe (stakkels dig)
Avatar billede agermose Nybegynder
01. august 2001 - 14:22 #5
tilføj en textListener til din textfield. Der kan du så holde øje med om der indtastes for meget tekst
Avatar billede disky Nybegynder
01. august 2001 - 14:23 #6
Der er vist ikke meget andet end det agermose siger du kan gøre. Men det er ret nemt at implementere
Avatar billede lsskaarup Nybegynder
01. august 2001 - 14:31 #7
Nu er jeg forholdsvis ny i java, så helt nemt for mig er det ikke. Hvordan skal jeg tilfølge textListener ?
Avatar billede agermose Nybegynder
01. august 2001 - 15:10 #8
noget i retning af

field.addTextListener(new TextListener() {
  public void textValueChanged(TextEvent e) {
      if (field.getText().length() > 10)
        field.setText(substr....);
  }
});
Avatar billede lsskaarup Nybegynder
02. august 2001 - 13:17 #9
Nu har jeg forsøgt ret mange gange, men uden held. Det er som om den ikke \"lytter\" efter indtastninger i TextField\'et.
Avatar billede disky Nybegynder
02. august 2001 - 13:18 #10
og det er på dit textfield du har addet den text listener ?

I agermoses eksempel hedder fieldet: field
Avatar billede lsskaarup Nybegynder
02. august 2001 - 13:34 #11
Ja, men den påstår at \"new TextListener()\" ikke er en valid type.
Avatar billede disky Nybegynder
02. august 2001 - 13:42 #12
hmmm,

Har du en

import java.awt.event;

med ?
Avatar billede lsskaarup Nybegynder
02. august 2001 - 13:50 #13
ja
Avatar billede lsskaarup Nybegynder
02. august 2001 - 13:53 #14
Kan du/I ike prøve, hvis I har tid, at lave en meget simple GUI, men kun en TextField. Hvor man så i denne TextField, ikke kan skrive mere, når antallet af tegn er kommet op på x-antal. Jeg er villig til at give flere point for det.
Avatar billede lsskaarup Nybegynder
02. august 2001 - 13:54 #15
Så kan jeh sammenligne med hvad jeg har lavet, for jeg kan sgu snart ikke holde rede i den, så mange ændringer har jeg prøvet at lave.
Avatar billede disky Nybegynder
02. august 2001 - 14:10 #16
her er der et der virker:

Undskyld den blandede måde at sætte {}\'ere på.
Men Forte vil absolut bruge den grimme måde med { i enden af en linie.

Eksemplet er testet og virker :)

/*
* text.java
*
* Created on 2. august 2001, 14:04
*/
import java.awt.*;
import java.awt.event.*;

/**
*
* @author  srr
* @version
*/
public class text extends java.awt.Dialog {

    /** Creates new form text */
    public text(java.awt.Frame parent,boolean modal) {
        super (parent, modal);
        initComponents ();
        pack ();
    textField1.addTextListener(new TextListener()
            {
                  public void textValueChanged(TextEvent e)
                {
                          if (textField1.getText().length() > 10)
                    {
                            textField1.setText(\"BUMMER\");
                    }
                  }
            });
    }

    /** This method is called from within the init() method to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the FormEditor.
    */
    private void initComponents()
    {
        textField1 = new java.awt.TextField();
        setLayout(new java.awt.BorderLayout());
        addWindowListener(new java.awt.event.WindowAdapter()
        {
            public void windowClosing(java.awt.event.WindowEvent evt)
            {
                closeDialog(evt);
            }
        }
        );
       
        textField1.setBackground(java.awt.Color.white);
        textField1.setName(\"textfield1\");
        textField1.setFont(new java.awt.Font (\"Dialog\", 0, 11));
        textField1.setForeground(java.awt.Color.black);
        textField1.setText(\"textField1\");
       
        add(textField1, java.awt.BorderLayout.CENTER);
       
    }

    /** Closes the dialog */
    private void closeDialog(java.awt.event.WindowEvent evt) {
        setVisible (false);
        dispose ();
    }

    /**
    * @param args the command line arguments
    */
    public static void main (String args[]) {
        new text (new java.awt.Frame (), true).show ();
    }


    // Variables declaration - do not modify
    private java.awt.TextField textField1;
    // End of variables declaration

}
Avatar billede disky Nybegynder
02. august 2001 - 14:13 #17
ligenu skriver den \'bummer\' i feltet, hvis du skriver mere end 10 chars.

Skal den stoppe derefter, kan du f.eks. huske værdien før sidste tastetryk og indsætte den istedet.
Avatar billede lsskaarup Nybegynder
02. august 2001 - 14:41 #18
Kanont, kigger lige på det
Avatar billede lsskaarup Nybegynder
02. august 2001 - 15:09 #19
Nu har jeg prøvet at tage det jeg kan bruge, men stadigvæk kan jeg ikke få det til at virke.

Den siger at addTextListener ikke er defineret. Jeg har forløb placeret den, hvor jeg også har de andre Listener:

private void initConnections() throws java.lang.Exception {
    // user code begin {1}
    // user code end
    getTTilbageJButton().addActionListener(ivjEventHandler);
    getTPrintJButton().addActionListener(ivjEventHandler);
    getTNavnJTextField().addTextListener(new TextListener() {
        public void textValueChanged(TextEvent e) {
            if (getTNavnJTextField().getText().length() > 10) {
                getTNavnJTextField().setText(\"BUMMER\");
            }
        }
    });
}

Jeg prøver lige at lave en EventHandler et TextListener som jeg også har til ActionListener
Avatar billede disky Nybegynder
02. august 2001 - 15:10 #20
har du disse to imports ?

import java.awt.*;
import java.awt.event.*;

Avatar billede disky Nybegynder
02. august 2001 - 15:11 #21
du kan også lave en keylistener og tælle selv.
Avatar billede lsskaarup Nybegynder
02. august 2001 - 15:35 #22
Ja, jeg har de to imports. Hvad mener du med at tælle selv ?
Avatar billede disky Nybegynder
02. august 2001 - 15:37 #23
Med keylistener får du også en event hver gang der er trykket på en tast, ud fra dette, eller længden af TextFieldet kan du se hvor meget det er tastet. Det bedste er nok at kigge på length.

Kan du stadigvæk ikke compile ?

Hvilken version af JDK bruger du ?

Jeg brugte 1.3.1 til mit eksempel
Avatar billede lsskaarup Nybegynder
02. august 2001 - 15:56 #24
Jeg bruger kun 1.3.0. Ved du hvad ? Jeg er sgu ved at opgive dette, kan jeg lokke dig til at skrive din mail så jeg kan sende min kode til dig og du så kan kigge/lave det. Du skal selvfølgelig nok for flere point for det.
Avatar billede disky Nybegynder
02. august 2001 - 16:06 #25
disky@disky-design.dk
Avatar billede lsskaarup Nybegynder
03. august 2001 - 20:47 #26
Nu har jeg næsten fået det til at virke, dog kan jeg forsat skrive i textfield\'en efter er grænsen er overskredet. Hvordan gør man så brugeren ikke kan skrive mere, når grænsen er nået.
Avatar billede lsskaarup Nybegynder
04. august 2001 - 17:39 #27
Jeg har oprettet et nyt spørgsmål, vedrørende det at stoppe ved mask. grænsen i textfield\'et.
Avatar billede lsskaarup Nybegynder
05. august 2001 - 00:02 #28
Jeg har nu endelig fået det til at virke, og faktisk og nok ikke overraskede for jer, ligner det meget jeres. Agermose har fået point fordi han var den første, mens disky har hængt ved.

disky: Jeg opretter et nyt spørgsmål så du kan få de point jeg lovende dig for at ville kigge på min kodning.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester