Hey
Ik ben bezig met een (simpele) calculator in java, om te leren hoe ik een Java GUI maak. Maar ik loop nu tegen een probleem waar ik al verscheidene tijd mee zit, en wie ik niet kan oplossen. Vandaar dat ik hier om hulp vraag.
De rekenmachine is nog niet helemaal af, maar ik ben nu bezig met het gedeelte om uit het invoerveld de waarde die ingevoerd is door de gebruiker te halen, en daarvan een int te maken.
Ik heb 2 klassen geschreven, 1 voor het invoerveld en 1 voor de gehele GUI. De code volgt.
Invoerveld.java
Rekenmachine.java
Mijn probleem is nu de string altijd leeg aankomt als ik bijvoorbeeld 5 indruk, en dan op het plusknopje druk.. Daarbij krijg ik de volgende foutmeldingen:
Er zijn er wel meer maar die zijn denk ik niet van belang omdat ze meer met java.awt ed te maken hebben
Hier voor de duidelijkheid nog even de code waar het volgens mij fout moet gaan:
Ik heb her en der (zoals je wel kunt zien) wat System.out's neergezet, om de waarden te bekijken, maar deze lijken mij volledig correct, en totaal niet leeg zoals de foutmelding aangeeft..
Ik heb al geprobeer om de Integer.parseInt in de klasse rekenmachine te zetten en eerst de getText() op te slaan, en die daarna pas om te parsen, maar ook dat mocht niet baten..
Hopelijk kan iemand mij helpen want ik zie het ff niet meer zitten

/edit: http://media5.filewind.com/g.php?filepath=5754
De rekenmachine is nog niet helemaal af, maar ik ben nu bezig met het gedeelte om uit het invoerveld de waarde die ingevoerd is door de gebruiker te halen, en daarvan een int te maken.
Ik heb 2 klassen geschreven, 1 voor het invoerveld en 1 voor de gehele GUI. De code volgt.
Invoerveld.java
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| /** * Write a description of class Invoerveld here. * * @author (your name) * @version (a version number or a date) */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Invoerveld extends JPanel { private JTextField invoerveld; public Invoerveld(){ invoerveld = new JTextField( 25 ); //invoerveld.setBounds( 10, 500, 10, 500 ); add( invoerveld ); } public int getInvoer(){ int invoer = Integer.parseInt( invoerveld.getText() ); return invoer; } public void addWaarde( String waarde ){ invoerveld.setText( invoerveld.getText() + waarde ); } } |
Rekenmachine.java
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| class Handler implements ActionListener{ public void actionPerformed( ActionEvent e ){ if( e.getSource() == knop7 ){ invoerveld.addWaarde( "7" ); } else if( e.getSource() == knop_plus ){ //System.out.println( invoerveld.getInvoer() ); //eerst de gettext opslaan int temp = invoerveld.getInvoer(); System.out.println( temp ); //System.out.println( invoerveld.getInvoer() + " .. " + invoer1 + " lol " + temp); String berekening = "plus"; invoerveld.clearField(); } } } |
Mijn probleem is nu de string altijd leeg aankomt als ik bijvoorbeeld 5 indruk, en dan op het plusknopje druk.. Daarbij krijg ik de volgende foutmeldingen:
code:
1
2
3
4
| Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at Invoerveld.getInvoer(Invoerveld.java:22)
at Rekenmachine$Handler.actionPerformed(Rekenmachine.java:129) |
Er zijn er wel meer maar die zijn denk ik niet van belang omdat ze meer met java.awt ed te maken hebben
Hier voor de duidelijkheid nog even de code waar het volgens mij fout moet gaan:
Java:
1
2
3
4
5
6
7
8
| int temp = invoerveld.getInvoer(); //in combinatie met public int getInvoer(){ int invoer = Integer.parseInt( invoerveld.getText() ); return invoer; } |
Ik heb her en der (zoals je wel kunt zien) wat System.out's neergezet, om de waarden te bekijken, maar deze lijken mij volledig correct, en totaal niet leeg zoals de foutmelding aangeeft..
Ik heb al geprobeer om de Integer.parseInt in de klasse rekenmachine te zetten en eerst de getText() op te slaan, en die daarna pas om te parsen, maar ook dat mocht niet baten..
Hopelijk kan iemand mij helpen want ik zie het ff niet meer zitten
/edit: http://media5.filewind.com/g.php?filepath=5754
[ Voor 52% gewijzigd door Enfer op 13-02-2007 15:20 . Reden: wat RobIII zegt ]