Toon posts:

[JAVA] Button waarde veranderen per klik

Pagina: 1
Acties:
  • 1.229 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben bezig met een rekenmachine. Nu ben ik vrij noob in Java maar ik hoop dat jullie mij kunnen helpen.

Ik ben dus een rekenmachine aan het maken met 10 textfields. onder deze textfields staan 9 knoppen. De bedoeling is nu dat per textfield de waarde uit die textfield + - / of x op uitgevoerd moet kunnen worden.

Wanneer je op die knop eronder drukt moet deze kunnen veranderen van waarde. Standaard staat hij op + maar wanneer iemand erop klikt moet het - worden en daarna / en daarna x. Dus nu is eigenlijk dat ook mijn vraag hoe ik dit kan doen.

Dit heb ik tot nu toe. Hoop dat iemand mij kan helpen of wegwijs kan maken.

code:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/**
 * @(#)Koen.java
 *
 * Rekenmachine Toets
 *
 * @author 
 * @version 1.00 06/05/08
 */
 
import java.awt.*;
import java.applet.*;

public class Koen extends Applet {
    TextField  invoer[ ] = new TextField [10], resultot;
    Button knoppen[ ] = new Button [9], result;
    Label resultis;
    
    public void init() {
        
        setLayout( null );
        
        // Margin-left for txtfields and buttons
        int x1 = 30;
        int x2 = 50;
        
        // Show Textfields
        for (int i=0; i<10; i++) {
            invoer [ i ] = new TextField (3);
            invoer[ i ].setBounds( x1, 10, 30, 20);
            add (invoer [ i ]);
            x1 += 50;
        } 
        // Show Buttons              
        for (int i=0; i<9; i++) {
            knoppen [ i ] = new Button ("+");
            knoppen[ i ].setBounds( x2, 40, 30, 20);
            add (knoppen [ i ]);
            x2 += 50;
        } 
        
        // Button for result action
        result = new Button("Get Result");
        result.setBounds(230, 90, 80, 20);
        
        // Label 
        resultis = new Label("Result =");
        resultis.setBounds(150, 130, 60, 20);
        
        // Result in txtfield
        resultot = new TextField(10);
        resultot.setBounds(220, 130, 100, 20);
        resultot.setEnabled(false);
        
        add(result);
        add(resultis);
        add(resultot);
    }

    public void paint(Graphics g) {
        g.drawString(".", 50, 60 );
    }
}

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 18:32
Ik zou eens beginnen met een actionListener aan je buttons te hangen

Roomba E5 te koop


Verwijderd

Allereerst moet je uiteraard Events afhandelen doormiddel van ActionListeners.
Zodra je dan het klikken van je knop afhandeld kan je daar uiteraard ook de label van je button wijzigen.

Suc6 ermee en alle antwoorden op je vragen worden hier uitgebreid besproken incl. voorbeelden:
http://java.sun.com/devel...raining/awt/contents.html

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Je kan ook gewoon een ComboBox gebruiken in plaats van een Button.


Heb je eigenlijk ooit wel eens een rekenmachine in het echt gezien?

Verwijderd

Topicstarter
hehe ja ik heb wel eens eerder een rekenmachine gezien. Maar deze moet gewoon zo even zijn.

Met ActionListeners ben ik opzich ook wel bekend mee hoor maar hoe ga ik het binnen die ActionListener oplossen.

Switch statement ofzo? Ben echt even inspiratieloos voor dit :S

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Verwijderd schreef op maandag 08 mei 2006 @ 15:50:
hehe ja ik heb wel eens eerder een rekenmachine gezien. Maar deze moet gewoon zo even zijn.

Met ActionListeners ben ik opzich ook wel bekend mee hoor maar hoe ga ik het binnen die ActionListener oplossen.

Switch statement ofzo? Ben echt even inspiratieloos voor dit :S
Stop de operatoren in een array.
En hou een current bij.
Dan ga je bij elke klik een stap verder.
En aan het eind ga je naar de eerste :)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Verwijderd

Topicstarter
Gonadan schreef op maandag 08 mei 2006 @ 15:55:
[...]

Stop de operatoren in een array.
En hou een current bij.
Dan ga je bij elke klik een stap verder.
En aan het eind ga je naar de eerste :)
Dus gewoon bijhouden met getallen of iets?

dus

0 = +
1 = -
2 = /
3 = *

en dan een int waarde steeds tot 3 laten tellen per klik. en dan bij 4e klik weer op +?

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Verwijderd schreef op maandag 08 mei 2006 @ 16:08:
[...]


Dus gewoon bijhouden met getallen of iets?

dus

0 = +
1 = -
2 = /
3 = *

en dan een int waarde steeds tot 3 laten tellen per klik. en dan bij 4e klik weer op +?
Bijvoorbeeld :)
Java:
1
2
3
4
5
6
7
8
9
10
11
char[] operators = {'+', '-', '/', '*'};
int current = 0;

...

void onClick() {
  current++;
  if (current == operators.length) {
    current = 0;
  }
}

Dit is maar een simpel voorbeeld.
Er zijn tientallen manieren om dit op te lossen :)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 20-02 03:31

Gerco

Professional Newbie

Een redelijk nette manier om dit op te lossen lijkt me om een subclass te maken van Button die zelf zijn state bijhoud. Die geef je dan een ActionListener die in zijn event properties duidelijk maakt om welke operatir het gaat. Het is ook mogelijk om die Button dan gelijk vier ActionListeners mee te geven, voor elke Operator een.

Op die manier houd je de logica van het wisselen van opdruk in de Button en niet in je programma.

[ Voor 14% gewijzigd door Gerco op 08-05-2006 16:49 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

code:
1
2
3
4
interface BinaryOperation { 
    int calculate(int arg1, int arg2);
    String getLabel();
}

wellicht overkill, wel netjes denk ik...

[ Voor 8% gewijzigd door Verwijderd op 08-05-2006 16:54 . Reden: code tags ]


Verwijderd

Topicstarter
Gerco schreef op maandag 08 mei 2006 @ 16:49:
Een redelijk nette manier om dit op te lossen lijkt me om een subclass te maken van Button die zelf zijn state bijhoud. Die geef je dan een ActionListener die in zijn event properties duidelijk maakt om welke operatir het gaat. Het is ook mogelijk om die Button dan gelijk vier ActionListeners mee te geven, voor elke Operator een.

Op die manier houd je de logica van het wisselen van opdruk in de Button en niet in je programma.
heb je een klein voorbeeld toevallig? snap het idee niet helemaal

thnx @ Gonadan hier ga ik het ook mee proberen.. Ook wel logisch zo trouwens maar ik ik heb even totaal een zwart gat in mijn hoofd vandaag 8)7

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18:46
Verwijderd schreef op maandag 08 mei 2006 @ 20:40:
[...]


heb je een klein voorbeeld toevallig? snap het idee niet helemaal

thnx @ Gonadan hier ga ik het ook mee proberen.. Ook wel logisch zo trouwens maar ik ik heb even totaal een zwart gat in mijn hoofd vandaag 8)7
Je maakt bijvoorbeeld een class JChangableButton die JButton extends.

Gonadan geeft een manier om de operator bij te houden met een int. Ikzelf gebruik een array van Strings in plaats van chars zodat je operator meer dan één teken kan zijn en je hoeft geen casts uit te voeren om de tekst op je button te plaatsen.

Maargoed, in de no-arg constructor stel je de tekst in die de button in het begin heeft, bijvoorbeeld met setText(operators[current]). Ook hang je in de constructor een ActionListener aan je button en door actionPerformed() uit de interface ActionListener te implementeren in je klasse kun je op de manier van Gonadan steeds van operator wisselen. Wel moet je na de wissel de tekst daarwerkelijk aanpassen op je button door setText() aan te roepen.

[ Voor 12% gewijzigd door Jaap-Jan op 08-05-2006 21:33 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 17:25

Robtimus

me Robtimus no like you

Gonadan schreef op maandag 08 mei 2006 @ 16:35:
Java:
1
2
3
4
5
6
7
8
9
10
11
char[] operators = {'+', '-', '/', '*'};
int current = 0;

...

void onClick() {
  current++;
  if (current == operators.length) {
    current = 0;
  }
}
Pssst:
Java:
1
current = (++current) % operators.length;
;)

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
IceManX schreef op maandag 08 mei 2006 @ 21:39:
[...]
Pssst:
Java:
1
current = (++current) % operators.length;
;)
offtopic:
Mooie oplossing, ware het niet dat hij dan moet uitkijken dat hij niet meer dan
Integer.MAX_VALUE keer op het knopje drukt. (2147483647 keer dus) :+

ZWETS |:(
Japie_17 schreef op maandag 08 mei 2006 @ 21:22:
Gonadan geeft een manier om de operator bij te houden met een int. Ikzelf gebruik een array van Strings in plaats van chars zodat je operator meer dan één teken kan zijn en je hoeft geen casts uit te voeren om de tekst op je button te plaatsen.
Goed punt. Een String array is net wat netter :)

Maar dan moet je wel weer een String.equals gaan aanroepen om te kijken welke operator je gebruikt.
Of je moet er voor kiezen om constanten te gebruiken, dat is sowieso altijd wel netjes. :)
Maargoed, in de no-arg constructor stel je de tekst in die de button in het begin heeft, bijvoorbeeld met setText(operators[current]). Ook hang je in de constructor een ActionListener aan je button en door actionPerformed() uit de interface ActionListener te implementeren in je klasse kun je op de manier van Gonadan steeds van operator wisselen. Wel moet je na de wissel de tekst daarwerkelijk aanpassen op je button door setText() aan te roepen.
Is het niet beter om bij de update() of repaint() gewoon steeds de tekst aan de hand van de 'current operator' uit te lezen?
Dan staat hij aan het begin ook meteen op de eerste. :)

[ Voor 68% gewijzigd door Gonadan op 09-05-2006 08:29 ]

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18:46
Gonadan schreef op dinsdag 09 mei 2006 @ 08:17:
[...]

offtopic:
Mooie oplossing, ware het niet dat hij dan moet uitkijken dat hij niet meer dan
Integer.MAX_VALUE keer op het knopje drukt. (2147483647 keer dus) :+
Dat dacht ik in eerste instantie ook, maar hij slaat het getal op wat eruit komt nadat de modulus is berekend.

Dus, als operator.length = 4 en current = 3. Dan wordt de nieuwe eerst 4, maar nadat de modulus is berekend, wordt current dus gewoon 4 % 4 = 0.

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Japie_17 schreef op dinsdag 09 mei 2006 @ 08:24:
[...]

Dat dacht ik in eerste instantie ook, maar hij slaat het getal op wat eruit komt nadat de modulus is berekend.

Dus, als operator.length = 4 en current = 3. Dan wordt de nieuwe eerst 4, maar nadat de modulus is berekend, wordt current dus gewoon 4 % 4 = 0.
Ja ik weet het, ik had hem al geëdit. :)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Verwijderd

Topicstarter
thnx mensen als ik vandaag even de tijd heb ga ik er aan verder werken. Mocht het niet lukken dan roep ik jullie wel weer :D

thnx thnx thnx _/-\o_

Verwijderd

Topicstarter
Mooi ik heb het bijna werkend.

Alleen bij de eerste knop nog

omdat ik een switch statement aanroep waarin ik gewoon al heb gezet knoppen[0].setLabel("-") etc

Maar nu reageren alle 9 knoppen op deze actie. En of ik nu op de eerste knop of de 4e knop druk. Alles wordt gechanged op de 1e knop.

Hoe kan ik via die actionlistener meegeven om welke knop het gaat?

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 18:32
Code please, ik kan niet raden hoe jij het aan elkaar geknoopt heb.

Roomba E5 te koop


Verwijderd

Topicstarter
sorry

code:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/**
 * @(#)Koen.java
 *
 * Rekenmachine Toets
 *
 * @author 
 * @version 1.00 06/05/08
 */
 
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Koen extends Applet {
    TextField  invoer[ ] = new TextField [10], resultot;
    Button knoppen[ ] = new Button [9], result;
    Label resultis;
    char[] operators = {'+', '-', '/', '*'}; 
    int current = 0; 

    
    public void init() {
        
        setLayout( null );
        
        // Margin-left for txtfields and buttons
        int x1 = 30;
        int x2 = 50;
        
        // Show Textfields
        for (int i=0; i<10; i++) {
            invoer [ i ] = new TextField (3);
            invoer[ i ].setBounds( x1, 10, 30, 20);
            add (invoer [ i ]);
            x1 += 50;
        } 
        // Show Buttons              
        for (int i=0; i<9; i++) {
            knoppen [ i ] = new Button ("+");
            knoppen[ i ].setBounds( x2, 40, 30, 20);
            knoppen[ i ].addActionListener( new KnopHandler() );
            add (knoppen [ i ]);
            x2 += 50;
        } 
        
        // Button for result action
        result = new Button("Get Result");
        result.setBounds(230, 90, 80, 20);
        
        // Label 
        resultis = new Label("Result =");
        resultis.setBounds(150, 130, 60, 20);
        
        // Result in txtfield
        resultot = new TextField(10);
        resultot.setBounds(220, 130, 100, 20);
        resultot.setEnabled(false);
        
        add(result);
        add(resultis);
        add(resultot);
    }

    public void paint(Graphics g) {
        g.drawString(".", 50, 60 );
    }
    
    class KnopHandler implements ActionListener {
        public void actionPerformed( ActionEvent e ) {
          current++; 
          if (current == operators.length) { 
            current = 0; 
          } 
          
          switch(current) {
            case 0: knoppen[i].setLabel("+");
                    break;
            case 1: knoppen[i].setLabel("-");
                    break;
            case 2: knoppen[i].setLabel("/");
                    break;
            case 3: knoppen[i].setLabel("*");
                    break;
          }
          
        }
    }
}

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 18:32
Waar haal je "i" vandaan in je actionPerformed methode? Je mag nu al blij zijn dat ie uberhaupt iets doet. Om de button te achterhalen kan je ook e.getSource casten naar een button, en daar de setLabel methode van aanroepen. Op die manier heb je altijd het object waar het event vandaan komt.

[ Voor 3% gewijzigd door sig69 op 09-05-2006 17:52 ]

Roomba E5 te koop


Verwijderd

Topicstarter
sig69 schreef op dinsdag 09 mei 2006 @ 17:51:
Waar haal je "i" vandaan in je actionPerformed methode? Je mag nu al blij zijn dat ie uberhaupt iets doet. Om de button te achterhalen kan je ook e.getSource casten naar een button, en daar de setLabel methode van aanroepen. Op die manier heb je altijd het object waar het event vandaan komt.
oh foutje!!! daar moest staan in die switch knoppen[0]

maar had wat geprobeerd en dat stond er nog... sorry daar moet dus gewoon knoppen[0] staan....

Verwijderd

Topicstarter
Hoe gebruik ik die e.getSource precies. Heb er wat mee lopen kutten maar krijg het niet werkend. Na wat zoekwerk zie ik die e.getSource in scripts terug komen alleen in If statements maar dat lijkt e niet echt logisch in mijn script.

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 18-02 10:22

NetForce1

(inspiratie == 0) -> true

Je wilt de text van de button waarop geklikt is veranderen toch?
Dan heb je e.getSource() nodig, die geeft nl het component terug waar het event op gebeurd. In jouw geval dus de knop waar je op geklikt hebt.
Je KnopHandler moet dus zoiets worden:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
class KnopHandler implements ActionListener {
    private int current = 0;

    public void actionPerformed( ActionEvent e ) {
        current++; 
        if (current == operators.length) { 
            current = 0; 
        } 
          
        ((Button)e.getSource()).setLabel(operators[current]);
    }
}

Dit gaat overigens nog niet werken, je moet nl. voor iedere button een current bijhouden. Het lijkt me dus beter om de oplossing van Gerco te gebruiken.

[ Voor 17% gewijzigd door NetForce1 op 09-05-2006 18:45 . Reden: cast ]

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Verwijderd

Topicstarter
NetForce1 schreef op dinsdag 09 mei 2006 @ 18:42:
Je wilt de text van de button waarop geklikt is veranderen toch?
Dan heb je e.getSource() nodig, die geeft nl het component terug waar het event op gebeurd. In jouw geval dus de knop waar je op geklikt hebt.
Je KnopHandler moet dus zoiets worden:
Java:
1
2
3
4
5
6
7
8
9
10
class KnopHandler implements ActionListener {
    public void actionPerformed( ActionEvent e ) {
        current++; 
        if (current == operators.length) { 
            current = 0; 
        } 
          
        ((Button)e.getSource()).setLabel(operators[current]);
    }
}

Dit gaat overigens nog niet werken, je moet nl. voor iedere button een current bijhouden. Het lijkt me dus beter om de oplossing van Gerco te gebruiken.
hmmm dat had ik dus ook al gedaan gaf een error moment zal nog eens proberen misschien dat ik wat vergeten ben.

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18:46
Je bent een beetje raar bezig :P. Al je knoppen gebruiken dezelfde current (wat waarschijnlijk de reden is dat al je knoppen tegelijk veranderen) en waarvoor gebruik je die switch() en doe je niets meer met je operator array?

dit:
Java:
1
2
3
4
5
6
7
8
9
10
          switch(current) {
              case 0: knoppen[i].setLabel("+");
                      break;
              case 1: knoppen[i].setLabel("-");
                      break;
              case 2: knoppen[i].setLabel("/");
                      break;
              case 3: knoppen[i].setLabel("*");
                      break;
          }
is heel simpel te vervangen voor dit:
Java:
1
e.getSource.setLabel(Character.toString(operators[current]));


Verder sla je alle adviezen met betrekking tot het maken van een nieuwe subclass voor die button in de wind en smijt je alles in één grote file. Waarom doe je niets met de tips die gegeven worden? ;)

[ Voor 35% gewijzigd door Jaap-Jan op 09-05-2006 19:24 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Verwijderd

Topicstarter
ik heb het nu werkend :D:D. Eens kijken of ik makkelijk die current states later nog in die hele berekening kan gooien :P

code:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/**
 * @(#)Koen.java
 *
 * Rekenmachine Toets
 *
 * @author 
 * @version 1.00 06/05/08
 */
 
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Koen extends Applet {
    TextField  invoer[ ] = new TextField [10], resultot;
    Button knoppen[ ] = new Button [9], result;
    Label resultis;
    char[] operators = {'+', '-', '/', '*'}; 
    int current = 0; 

    
    public void init() {
        
        setLayout( null );
        
        // Margin-left for txtfields and buttons
        int x1 = 30;
        int x2 = 50;
        
        // Show Textfields
        for (int i=0; i<10; i++) {
            invoer [ i ] = new TextField (3);
            invoer[ i ].setBounds( x1, 10, 30, 20);
            add (invoer [ i ]);
            x1 += 50;
        } 
        // Show Buttons              
        for (int i=0; i<9; i++) {
            knoppen [ i ] = new Button ("+");
            knoppen[ i ].setBounds( x2, 40, 30, 20);
            knoppen[ i ].addActionListener( new KnopHandler() );
            add (knoppen [ i ]);
            x2 += 50;
        } 
        
        // Button for result action
        result = new Button("Get Result");
        result.setBounds(230, 90, 80, 20);
        
        // Label 
        resultis = new Label("Result =");
        resultis.setBounds(150, 130, 60, 20);
        
        // Result in txtfield
        resultot = new TextField(10);
        resultot.setBounds(220, 130, 100, 20);
        resultot.setEnabled(false);
        
        add(result);
        add(resultis);
        add(resultot);
    }

    public void paint(Graphics g) {
        g.drawString(".", 50, 60 );
    }
    
    class KnopHandler implements ActionListener {
        public void actionPerformed( ActionEvent e ) {
          current++; 
          if (current == operators.length) { 
            current = 0; 
          } 
          
          switch(current) {
            case 0: ((Button)e.getSource()).setLabel("+"); 
                    break;
            case 1: ((Button)e.getSource()).setLabel("-");
                    break;
            case 2: ((Button)e.getSource()).setLabel("/");
                    break;
            case 3: ((Button)e.getSource()).setLabel("*");
                    break;
          }     
        }
    }
}

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 18-02 10:22

NetForce1

(inspiratie == 0) -> true

Japie_17 schreef op dinsdag 09 mei 2006 @ 18:47:
code:
1
this.setText(Character.toString(operators[current]));
Euh, this.setText op een ActionListener zal waarschijnlijk een dikke compile-error opleveren. Het is java, geen javascript he :P. De toString-operatie op die char was ik dan weer vergeten. ;)

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18:46
NetForce1 schreef op dinsdag 09 mei 2006 @ 18:52:
[...]

Euh, this.setText op een ActionListener zal waarschijnlijk een dikke compile-error opleveren. Het is java, geen javascript he :P. De toString-operatie op die char was ik dan weer vergeten. ;)
Tuurlijk heb je gelijk, ik gooide mijn eigen code in de war met de code die ik bedoelde. Ik heb zelf al een los knopje gemaakt, maar ik had die tekst niet goed aangepast :P.

[ Voor 3% gewijzigd door Jaap-Jan op 09-05-2006 19:21 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Verwijderd

Topicstarter
Iemand een tip ook hoe ik nu alles kan gaan berekenen?

dus
txtfield 1 ( + - / * --> button1) txtfield 2 ( + - / * --> button2) txtfield 3.... etc etc

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18:46
Verwijderd schreef op dinsdag 09 mei 2006 @ 19:47:
Iemand een tip ook hoe ik nu alles kan gaan berekenen?

dus
txtfield 1 ( + - / * --> button1) txtfield 2 ( + - / * --> button2) txtfield 3.... etc etc
Yup:
1) Lees het eerste inputveld uit en sla die op in een int die je gebruikt om mee te rekenen, bijvoorbeeld 'tussenresultaat'. (parsen is nodig).

2) Itereer langs elk inputveld, begin bij de 2e en eindig bij de laatste. Deze stappen doen voor elk invoerveld:
2.1) Parse de tekst van het invoerveld als int en sla die op in een andere variabele, bijvoorbeeld 'tijdelijk'.
2.2) Zoek de actie van de knop die je moet uitvoeren
2.3) Pas die actie toe op 'tussenresultaat' en 'tijdelijk' en sla de uitkomst op in 'tussenresultaat'.

3) Toon 'tussenresultaat' in het label.

Succes :). De implementatie laat ik aan jou en 2.2 moet nog wat meer uitgewerkt worden :).

[ Voor 29% gewijzigd door Jaap-Jan op 09-05-2006 21:14 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Verwijderd

Topicstarter
hmm thnx kijken hoever ik hiermee kom :P denk niet ver maar ga het proberen :D

Verwijderd

Topicstarter
Hmmm het blijft lastig. Want als ik op de knopt voor resultaat klik krijg ik een nieuwe ActionListener.

Ik kan dat niet meer voor die knoppen e.getSource doen omdat ik niet op 1 van die knoppen dan gedrukt heb.

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18:46
Verwijderd schreef op dinsdag 09 mei 2006 @ 22:34:
Hmmm het blijft lastig. Want als ik op de knopt voor resultaat klik krijg ik een nieuwe ActionListener.

Ik kan dat niet meer voor die knoppen e.getSource doen omdat ik niet op 1 van die knoppen dan gedrukt heb.
Kun je niet iets doen met
Java:
1
2
3
if (e.getSource() == button) {
    //process result
}
:? Op die manier kun je bepalen wat je moet doen.

Hou je overigens wel in het achterhoofd dat je nog steeds beter je knop zichzelf kan laten veranderen, in plaats van een klasse waarin een knop zit de knop aan te laten passen?

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Verwijderd

Topicstarter
Japie_17 schreef op dinsdag 09 mei 2006 @ 23:04:
[...]
Kun je niet iets doen met
Java:
1
2
3
if (e.getSource() == button) {
    //process result
}
:? Op die manier kun je bepalen wat je moet doen.

Hou je overigens wel in het achterhoofd dat je nog steeds beter je knop zichzelf kan laten veranderen, in plaats van een klasse waarin een knop zit de knop aan te laten passen?
volgens mij snap je niet helemaal de de bedoeling

maar met e.getSource kan ik niet in 1 toch ook 9 buttons de stand van opvragen?
Hou je overigens wel in het achterhoofd dat je nog steeds beter je knop zichzelf kan laten veranderen, in plaats van een klasse waarin een knop zit de knop aan te laten passen?
hoe kan ik die het best zelf laten veranderen dan?

  • Gonadan
  • Registratie: Februari 2004
  • Nu online

Gonadan

Admin Beeld & Geluid, Harde Waren
Verwijderd schreef op dinsdag 09 mei 2006 @ 18:44:
[...]


hmmm dat had ik dus ook al gedaan gaf een error moment zal nog eens proberen misschien dat ik wat vergeten ben.
Misschien kan je de errors die je krijg posten. :)
Dan kunnen wij tenminsten zien wát er fout gaat.

Ongelofeloos, wat ben ik een klunshark :+ :+ :+ :+
Gewoon de 2e pagina niet gezien |:( |:( |:( |:( |:(

[ Voor 16% gewijzigd door Gonadan op 10-05-2006 09:59 ]

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Verwijderd

Topicstarter
Het werkt nu toch? :p ben nu bezig met die berekeningen

Verwijderd

Topicstarter
Gonadan schreef op woensdag 10 mei 2006 @ 08:20:
[...]

Misschien kan je de errors die je krijg posten. :)
Dan kunnen wij tenminsten zien wát er fout gaat.

Ongelofeloos, wat ben ik een klunshark :+ :+ :+ :+
Gewoon de 2e pagina niet gezien |:( |:( |:( |:( |:(
geen probleem :)
Pagina: 1