Avatar billede lsskaarup Nybegynder
04. august 2001 - 17:16 Der er 12 kommentarer og
1 løsning

Stoppe skrivning i TextField

Hvordan stopper man skrivning i et TextField. Dette skal ske når en nærmere defineret grænse er nået.
Avatar billede bobbedude Nybegynder
04. august 2001 - 17:25 #1
>> lytter
Avatar billede anjensen1 Novice
04. august 2001 - 18:25 #2
Hej
det styrer du med
<textfeltHandle>.setEditable(<boolean>)
-Dette gælder for alle textkomponenter.
mvh
Avatar billede elv Nybegynder
04. august 2001 - 19:33 #3
Her er et eksempel på hvordan det kan virke. Det er en applet med et textfield og et TextArea som statusbar). Hvis du vil ændre antallet af bogstaver kan det gøres ved at ændre MAXCHARS

import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;

public class TestApplet extends Applet implements KeyListener
{
  public static final int MAXCHARS = 8; //Kan ændres
  TextField t;
  TextArea display;
  public void init()
  {
    t = new TextField(20);
    add(t, BorderLayout.NORTH);
    t.addKeyListener(this);

    display = new TextArea(12,50);
    add(display, BorderLayout.CENTER);
  }

  public void keyPressed(KeyEvent e)
  {
    if (e.getSource().equals(t))
    {
      show(\"Length = \" + t.getText().length());
      int code = e.getKeyCode();
      if ((code == KeyEvent.VK_DELETE)||(code == KeyEvent.VK_BACK_SPACE))
      {
        t.setEditable(true);
        show(\"Enabled\");
      }
      else if (t.getText().length() >= MAXCHARS)
      {
        t.setEditable(false);
        show(\"Disabled\");
      }
    }
  }

  public void keyReleased(KeyEvent e){}
  public void keyTyped(KeyEvent e){}

  public void show(String s)
  {
    display.append(s + \"\\n\");
    display.setCaretPosition(display.getText().length());
  }

}
Avatar billede elv Nybegynder
04. august 2001 - 19:33 #4
Skulle have været svar :)
Avatar billede lsskaarup Nybegynder
04. august 2001 - 21:02 #5
Det er meningen at man altid skal kunne skrive i feltet, bare man ikke kommer over maks. grænsen. Med setEditable kan man da ikke skrive i det bagefter.

elv, jeg kigger lige på dit forslag
Avatar billede lsskaarup Nybegynder
04. august 2001 - 23:27 #6
elv: Dit forslag virker godt nok, og dog.

Jeg kunne godt tænke mig at lave det samme på 3 forskellige textfields i samme skærm. Disse textfields har alle forskellige grænser.

Problemet ligger nu i at når jeg har fyldt et field ud til grænsen, så kan jeg ikke skrive i de to andre. Med det samme jeg prøver at skrive noget bliver Editable sat til false på dem, dette kan jeg selvfølgelig fjerne med backspace, men jeg kan stadigvæk ikke skrive i field\'et.

Warum das ??
Avatar billede lsskaarup Nybegynder
04. august 2001 - 23:33 #7
FLOT, jeg er vist ved at være lidt træt. Fejlen skylds at jeg stadigvæk tjekkede på det en af field\'ene når jeg skulle skrive i dem. Dette er nu ordnet.

Men jeg har et meget lille spørgsmål, idet dem jeg laver programet for godt kan være lidt krakielske. Når field\'ets editable er false, skal man trykke 1 gang for at ændre editable til true, derefter skal man trykke endnu 1 gang for at slette et tegn, kan denne operation ikke slås samme til en ?
Avatar billede elv Nybegynder
05. august 2001 - 11:10 #8
I det forslag jeg lavede, virker det fint på min computer. Hvis der er 8 tegn i og man trykker backspace, bliver tegnet slettet. Er du sikker på at du bruger keyPressed() og ikke keyReleased() (eller keyTyped)?
Avatar billede lsskaarup Nybegynder
05. august 2001 - 12:47 #9
Nej det var jeg ikke. Jeg var kommet til at bruge keytyped, men hvad er forskellige egenligt ?

Er Typed ikke når en et tegn et tastet, så er den jo også sluppet, hvilket efter min forståelse er Released. Til sidst er Pressed ikke når en tast er holdt nede.
Avatar billede elv Nybegynder
05. august 2001 - 13:07 #10
KeyPressed er når du trykker tasten ned, keyReleased er når du slipper den. KeyTyped er når du trykker og slipper igen. Alle tre bliver kaldt når man trykker en tast, men grunden til at den kun virker med keyPressed er, at den på det tidspunkt endnu ikke har sendt kommandoen videre til TextField\'en, og derfor kan tastetrykket stoppes.
Avatar billede lsskaarup Nybegynder
05. august 2001 - 14:25 #11
Okay
Avatar billede lsskaarup Nybegynder
05. august 2001 - 14:27 #12
Hov du skal da have din point, og tak for hjælpen
Avatar billede elv Nybegynder
05. august 2001 - 14:34 #13
Selv tak :)
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

IT-JOB

Politiets Efterretningstjeneste

AI/ML udvikler i PET

KMD A/S

E2E Tester

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Sektionschef til Cyber Security Guidance ved Cyberdivisionen i Forsvaret

Politiets Efterretningstjeneste

CNE-specialist til PET`s indhentningsafdeling