We zullen een programma ontwerpen waarbij de gebruiker 2 getallen kan ingeven in 2 tekstvakken. Als de gebruiker vervolgens op een knop Berekenen klikt, verschijnt de som van de beide getallen in een tekstvak onderaan.
Een nieuw formulier maak je als volgt aan:
Rechtsklik in het deelvenster Projects op de naam van de package waaraan je formulier wilt toevoegen.
Kies New – JFrame Form
Vul in het dialoogvenster New JFrame Form bij Class Name de naam in van het nieuwe formulier (vb. Aandelen)
Klik onderaan het dialoogvenster New JFrame Form op de knop Finish
Als je in de standaard werkbalk klikt op de groene pijl, dan wordt het laatste formulier geopend. Je kan dit wijzigen op de onderstaande manier:
Rechtsklik in het deelvenster Project op de naam van het project
Kies Set Configuration – Customize
Klik op de knop Browse bij Main Class
Selecteer in het dialoogvenster de klasse die moet uitgevoerd worden bij het drukken op de startknop en klik op de knop Select Main Class
Er zijn twee mogelijkheden om het actuele formulier (dit is het formulier waar je momenteel mee aan het werk bent) te starten:
Druk op Shift + F6
Klik met rechter muisknop op het .java bestand van het huidige formulier en kies voor Run File
De eerste stap is het ontwerpen van het formulier. Daarbij is het zeer belangrijk nauwkeurig na te gaan wat de gebruiker moet kunnen invoeren via het formulier en hoe de resultaten moeten terug gegeven worden aan de gebruiker.
Het formulier wordt dan gemaakt door de nodige besturingselementen (labels, tekstvakken, knoppen, …) vanuit de toolbox op het formulier te slepen. Elk van de besturingselementen krijgt daarbij een default naam en een default tekst.
Nadat alle gewenste besturingselementen op het formulier werden geplaatst, moeten de teksten en de namen van deze besturingselementen aangepast worden. Dit doen we door voor elk besturingselement de eigenschappen name en text aan te passen.
De eigenschap (Properties) text wordt gebruikt om het opschrift van een besturingselement te wijzigen. De eigenschap name dient om een besturingselement een andere naam te geven. Deze naam is enkel belangrijk voor gebruik binnen de programmeercode, de gebruiker van het programma komt hier niet mee in aanraking (in tegenstelling tot met de Text). Namen van besturingselementen worden niet zomaar lukraak gekozen. De besturingselementen krijgen bij voorkeur een betekenisvolle naam. Dit zal het programmeren eenvoudiger maken. Bovendien kan je de naam van een besturingselement een specifieke prefix geven al naargelang de aard van het besturingselement.
Label → prefix = lbl bijvoorbeeld lblGetal
TextBox → prefix = txt bijvoorbeeld txtGetal
Button → prefix = btn bijvoorbeeld btnBereken
De naam van een besturingselement veranderen, gaat als volgt:
Rechtsklik op het besturingselement ofwel op het formulier ofwel binnen het deelvenster Inspector
Kies Change Variable Name
Geef in het dialoogvenster Rename een nieuwe naam in
Druk op de knop OK
Als de gebruiker het programma uitvoert, zal hij eerst in de tekstvakken de getallen invoeren die hij wil opgeteld zien. Bij een druk op de knop Berekenen, moeten deze getallen binnen de programmeercode ‘verwerkt’ worden om zo de som van de getallen te krijgen. Dit betekent dat de getallen, die de gebruiker ingeeft in het formulier, in de programmeercode beschikbaar moeten zijn om ‘verwerkt’ te kunnen worden. Hiervoor gaan we in de programmeercode gebruik maken van variabelen. Zo’n variabele is eigenlijk een benoemde plaats in het computergeheugen waar je tijdelijk een waarde kan in stoppen.
De declaratie (= het aanmaken) en de initialisatie (= een waarde toekennen) van een variabele zal vaak de onderstaande vorm hebben:
double getal1 = Double.parseDouble(txtGetal1.getText());
Een variabele wordt gekenmerkt door een naam, een type en een inhoud.
Type van een variabele
Het type van de variabele hangt af van wat er in de variabele zal opgeslagen worden. Voorlopig zullen we ons beperken tot 3 types. Willen we een geheel getal opslaan in de variabele, dan zal de variabele van het type int zijn. Is de variabele bedoeld om een kommagetal te bevatten, dan zal de variabele van het type double zijn. Ten slotte is er nog het type String dat gebruikt wordt voor tekst. Dus
Geheel getal → int
Kommagetal → double
Tekst → String
Naam van een variabele
Opdat we de variabele zouden kunnen gebruiken in het programma, krijgt een variabele een naam. Het is belangrijk om een betekenisvolle naam te kiezen. Dit is gemakkelijker bij het programmeren zelf en ook als je achteraf het programma weer bekijk.
Om de leesbaarheid van het programma te verhogen, gebruiken we camel casing. Dit wil zeggen dat elke letter van een nieuw woord begint met een hoofdletter. De eerste letter schrijven we echter met een kleine letter, bijvoorbeeld temperatuurCelsius
Inhoud van een variabele
Een variabele zou weinig zinvol zijn, mochten we niet de mogelijkheid hebben om er een specifieke inhoud in te stoppen. Doorgaans zal in de loop van een programma de inhoud van een variabele dikwijls wijzigen. Er zijn 3 zaken belangrijk bij de inhoud van een variabele
txtGetal1.getText() → In dit voorbeeld programma willen we de tekst uit het besturingselement txtGetal1 opslaan in de variabele getal1. Daarom maken we gebruik van txtGetal1.getText() en dus niet van txtGetal1.
Double.parseDouble(txtGetal1.getText()) → Zoals hiervoor gezegd, geeft txtGetal1.getText() ons de tekst uit het tekstvak txtGetal1. Deze tekst is van het type String. We willen deze tekst echter opslaan in een variabele van het type double, zodat we er straks mee kunnen rekenen. Daarom moeten we de tekst converteren naar het type double. Dat is precies wat Double.parseDouble(txtGetal1.getText()); doet: de tekst van txtGetal1.getText()wordt omgezet naar een double
Een laatste belangrijk element is wat links en wat rechts van het =-teken staat. In wiskunde is a = b identiek gelijk aan b = a. Bij programmeren is dat niet zo en is wat er links en wat er rechts van het =-teken komt, wel belangrijk. Aan de linkerkant van = staat de variabele waar we iets willen in stoppen. Aan de rechterkant van het =-teken staat wat we er willen in stoppen.
In het voorgaande hebben we besproken waarom en hoe we inhoud van txtGetal1.getText() in een variabele getal1 stoppen. Dit was echter nog maar het begin, want de bedoeling van ons programma is dat we uiteindelijk de som maken van de 2 getallen die ingegeven worden door de gebruiker en het deze som teruggeven aan de gebruiker in txtResultaat.
Op analoge wijze als voor getal1 maken we eerst een tweede variabele getal2 aan. Deze variabele getal2 zal worden gebruikt om tijdelijk het getal uit txtGetal2 in op te slaan.
double getal2 = Double.parseDouble(txtGetal2.getText());
Via de variabelen getal1 en getal2 beschikken we in de programmeercode over de getallen die werden ingegeven door de gebruiker in txtGetal1 en txtGetal2 en staan deze klaar voor verwerking. We beslissen dat we het resultaat ook zullen opslaan in een variabele. Omdat de som van 2 reële getallen opnieuw een reëel getal is, zal deze variabele ook van het type double zijn. Bij het aanmaken van deze nieuwe variabele zijn opnieuw de naam, het type en de inhoud belangrijk.
double som = getal1 + getal2;
Na het berekenen van het resultaat in de vorige stap, rest er ons nu nog 1 stap. Dit berekende resultaat moet immers nog terug gegeven worden aan de gebruiker. Dit doen we op de onderstaande manier
txtResultaat.setText(Double.toString(som));
Een toepassing uitvoeren
Als je een toepassing ontwikkelt, is het nodig om regelmatig delen of de gehele toepassing uit te voeren.Je kunt de toepassing uitvoeren door op de F6-toets te drukken of op de knop in de werkbalk. Je kan ook in het Run-menu de optie Run Main Project kiezen.
Op het moment dat je de optie Start kiest, wordt het programma gecompileerd.
Als er geen fouten zijn, verschijnt het formulier.
Als er een fout gemaakt wordt, dan verschijnt een venster met daarin een vraag om al dan niet verder te gaan met de toepassing. In het Output venster zie je dat er iets fout gelopen is tijdens de compilatie van het project.
Samenvatting
Voor de duidelijkheid staat hieronder nog de volledige listing van het programma
private void btnBerekenActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
double getal1 = Double.parseDouble(txtGetal1.getText());
double getal2 = Double.parseDouble(txtGetal2.getText());
double som = ggetal1 + dblGetal2;
txtSom.setText(Double.toString(som));
}