Toon posts:

[Java] if (maand.getText()!="")

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste tweakers,
ik snap er geen moer van. Ik moet voor school een applet schrijven met twee textfields: maand en jaar, maar er moet een methode komen die er voor zorgt dat deze naar de huidige maand springen als er niets in is gevuld.

ik heb het nu zo:
code:
1
2
3
4
5
6
int month = now.get(now.MONTH); //Calendar now = Calendar.getInstance();

 if (maand.getText()!="")
 {
  month = Integer.parseInt( maand.getText() );
 }

uiteraard staat er nog wat code voor 1>=maand>=12 enzo, maar dat is hier even niet noodzakelijk.
Het gaat me er om dat
code:
1
if (maand.getText()!="")

niet doet wat het moet doen, want ik krijg gewoon foutmeldingen |:(
iemand een idee hoe het WEL moet?

tnx in advance

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Als je Strings vergelijkt met != kijk je of de "pointer" verschillend is.

Als je Strings op inhoud wilt controleren moet je de equals(); methode van String hebben

dus

getText().equals("");
eventueel met een ! ervoor :)

Verwijderd

Topicstarter
ik had al een vaag vermoeden, maar wist niet precies wat de constructie was. Cheers :)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Je kan in dit geval misschien nog beter een try-catch gebruiken om foute nummer formaten af te vangen. Ook kan je misschien beter met de lengte van de String werken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(maand.getText().length() > 0)
{
   try
   {
    Integer.parseInt(...)
   }
   catch(NumberFormatException exc)
   {
     // je moet natuurlijk wel een nummer intikken!
   }
}
else
{
    // je moet natuurlijk wel iets invullen.
}

Als je met Swing werkt kan je er zelfs voor zorgen dat er niets anders dan een nummer ingetikt kan worden. Ik kan echter niet aan je code zien of je dat doet...

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op zondag 11 november 2001 22:36 schreef mbravenboer het volgende:

...
Als je met Swing werkt kan je er zelfs voor zorgen dat er niets anders dan een nummer ingetikt kan worden. Ik kan echter niet aan je code zien of je dat doet...
Vertel... (hoef ik het zelf niet op te zoeken :P ;) )

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
The - DDD: Vertel... (hoef ik het zelf niet op te zoeken :P ;) )
Lui-wammes ;) . Het komt er op neer dat je zelf een een Documemt moet maken. Deze kan extenden van PlainDocument. Je voert bij een insert een check uit of de ingevoerde tekens correct zijn.

Merk op dat dit dus niet een "achteraf" methode is. Het JTextField geeft namelijk weer wat er het document zit. Wat niet in het document komt, wordt ook nooit zichtbaar :) . Het is dus een andere methode, dan het toevoegen van een KeyListener aan een AWT TextField, waarmee je een incorrect teken kan verwijderen.

In 1.4.0 is er zelfs een nieuwe voorziening; JFormattedTextField. Deze levert dit op een wat makkelijkere manier. In 1.3.0 zit niet zichtbaar in de colorchooser package een integer field (of document, weet niet zeker). Als je het dus op de eerste manier wilt doen, kan je daar eens kijken. Ook staat er een leuk voorbeeld in de Java Tutorial die deze methode toepast: http://java.sun.com/docs/books/tutorial/uiswing/components/textfield.html (Creating a Validated TextField).

Zelf gebruik ik een implementatie die iets weg heeft van een JFormattedTextField. Ik gebruik namelijk een interface DataType. Een implementatie daarvan is het IntegerType. Daarbij is er een DataTypeDocument. Het IntegerDocument is een extensie daarvan, die simpelweg een IntegerType gebruikt. Het IntegerTextField is een textfield met een IntegerDocument.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Op zondag 11 november 2001 23:47 schreef mbravenboer het volgende:
[..]Lui-wammes ;) . Het komt er op neer dat je zelf een een Documemt moet maken. Deze kan extenden van PlainDocument. Je voert bij een insert een check uit of de ingevoerde tekens correct zijn.
Wat is er mis met het gebruiken van een InputVerifier voor dit soort dingen? Kun je ook nog controleren of het wel een getal tussen 1 en 12 is.

With the light in our eyes, it's hard to see.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Dat kan met de document oplossing ook... Het voordeel (of nadeel) van de document oplossing is dat er altijd iets in het veld moet staan wat aan het document voldoet, ook terwijl je aan het editen bent. De InputVerifier gaat pas aan de slag als de focus van het component weggaat.

Je kan met de eerste oplossing in dit geval dus voorkomen dat mensen uberhaupt iets anders dan integers kunnen intikken :) .

Dus: niks mis mee, gewoon andere oplossing.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1