Toon posts:

[Java] applet gokkast

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

Verwijderd

Topicstarter
Ik zit al enkele uren te knutselen aan een java applet maar hij werkt niet correct en heb verschillende dingen geprobeerd.

Ik moet een gokkast maken, zodra ik op Gooi druk gaan alle 3 de tekstvakken een random getal draaien. Als ik 1 of meerdere getallen wil vastleggen dan moeten deze niet meer veranderd kunnen worden als ik weer op de Gooi knop druk. Zodra alle 3 de getallen hetzelfde zijn moet er een tekst komen te staan. Dit is op zich niet zo moeilijk dat alle drie de getallen gelijk moet zijn.

Maar... Ik ben bezig met de boolean voor als ik een cijfer heb vastgelegd, maar deze doet het niet. Ik heb verschillende dingen geprobeerd zoals meerdere klasses. Uiteindelijk probeer ik het nu met if else op te lossen maar weet niet of dit correct is? Wie kan mij hiermee verder helpen? Het liefst de code zodat ik ze kan vastleggen, voor de rest lukt het zelf waarschijnlijk wel.

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
package untitled2;

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

public class Applet1 extends Applet {
  TextField GetaleenTekstVak, GetaltweeTekstVak, GetaldrieTekstVak;
  Button GooiKnop, Getaleenvast, Getaltweevast, Getaldrievast;
  boolean vast1, vast2,vast3;
  int worp, worp2, worp3;


  public void init() {
    vast1 = false;
    vast2 = false;
    vast3 = false;    
    
    GooiKnop = new Button("Gooi");
    GooiKnop.addActionListener(new GooiHandler());
    add(GooiKnop);

    GetaleenTekstVak = new TextField(3);
    GetaleenTekstVak.setEditable (true);
    add(GetaleenTekstVak);

    GetaltweeTekstVak = new TextField(3);
    GetaltweeTekstVak.setEditable (true);
    add(GetaltweeTekstVak);

    GetaldrieTekstVak = new TextField(3);
    GetaldrieTekstVak.setEditable (true);
    add(GetaldrieTekstVak);

    Getaleenvast = new Button ("Vast 1");
    Getaleenvast.addActionListener(new GooiHandler());
    add(Getaleenvast);

    Getaltweevast = new Button ("Vast 2");
    Getaltweevast.addActionListener(new GooiHandler());
    add(Getaltweevast);

    Getaldrievast = new Button ("Vast 3");
    Getaldrievast.addActionListener(new GooiHandler());
    add(Getaldrievast);

  }

  class GooiHandler implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      
      if (!vast1) {
        vast1=true;
        GetaleenTekstVak.setEditable (false);
        validate();
      }
      else {
        worp=(int) (6*Math.random()+1);
        GetaleenTekstVak.setText(worp + "");
      }
      if (!vast2) {
        vast2=true;
        GetaleenTekstVak.setEditable (false);
        validate();
      }
      else {
        worp2=(int) (6*Math.random()+1);
        GetaltweeTekstVak.setText(worp + "");
      }
      if (!vast3) {
        vast3=true;
        GetaleenTekstVak.setEditable (false);
        validate();
      }
      else {
        worp3=(int) (6*Math.random()+1);
        GetaldrieTekstVak.setText(worp + "");
      }
    }
  }
}

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Als je ook een even zegt waar het precies fout gaat, dan is dat een stuk makkelijker... Nu moet ik maar wat gokken..

Verder: zet private en public voor je declaraties!

Gebruik verder geen knop om dingen vast te zetten, maar een CheckBox. Daarvan kun je met getSelected() opvragen of deze een kruisje bevat of niet. enigste wat je dus hoeft te doen is de Buttons verander in Checkboxes, ende if jes in GooiHandler.actionPerformed aanpassen (daar hoef je btw geen losse classe voor aan te maken, actionPerformed kan gewoon in de hoofdklasse.


Edit: Die Getalxxxvast.addActionListener heb je niet meer nodig als je een CheckBox gebruikt! Bovendien: Als je een ActionListener gebruikt voor meerder knoppen moet je met e.getSource() eerst opvragen waar het event vandaan komt!

[ Voor 21% gewijzigd door voodooless op 22-06-2004 15:57 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Als ik druk op een vastknop en dan were op gooi druk dan gaat ie gewoon verder met een getal raden terwijl ik hem heb vastgezet. ik zal het were verdre proberen!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Lees mijn bovenstaande tekst nu eens ff goed door, daar staat precies hoe het wel gaat werken (in ider geval een mogelijkheid)! Hoe je het nu gedaan hebt werkt dat natuurlijk niet!

Je kunt natuurlijk ook je eigen button maken die een CheckBox emuleert, als je dat beter vind uitzien :)

Maar bekijk eerst je code eens goed, en probeer te snappen wat het nu precies doet, dan zul je heel snel je eigen fouten zien!

[ Voor 53% gewijzigd door voodooless op 22-06-2004 16:02 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

Alle knoppen implementeren dezelfde ActionListener. Dus zoals je het nu doet, kan er niet achterhaald worden welke knop er ingedrukt is.
Daarnaast merk ik ook op dat de GooiHandler in ieder textfield dezelfde integer 'worp' neerzet als er een else uitgevoerd wordt.

Een checkbox gebruiken, zoals deepspace als suggestie gaf, is misschien handig. Maar het is veel handiger dat je van tevoren uitdenkt (of uitschrijft) welke objecten je nodig hebt, en welke interacties die met elkaar voeren. Als ik je code bekijk, krijg ik niet het idee dat je dat al gedaan hebt. De buttons die je bijvoorbeeld gebruikt voor het vastzetten kunnen beter aan een andere handler gekoppeld worden.

Verwijderd

Topicstarter
ik heb nu dit maar het werkt nog niet, het doet nog steeds hetzelfde 8)7


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
89
90
91
92
93
94
95
96
97
98
package untitled2;

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

public class Applet1 extends Applet {
  private TextField GetaleenTekstVak, GetaltweeTekstVak, GetaldrieTekstVak;
  private Button GooiKnop;
  private Checkbox Getaleenvast, Getaltweevast, Getaldrievast;
  private boolean isGeklikt1, isGeklikt2, isGeklikt3;

  public void init() {
    isGeklikt1 = false;
    isGeklikt2 = false;
    isGeklikt3 = false;
    
    GooiKnop = new Button("Gooi");
    GooiKnop.addActionListener(new GooiHandler());
    add(GooiKnop);

    GetaleenTekstVak = new TextField(3);
    GetaleenTekstVak.setEditable (true);
    add(GetaleenTekstVak);

    GetaltweeTekstVak = new TextField(3);
    GetaltweeTekstVak.setEditable (true);
    add(GetaltweeTekstVak);

    GetaldrieTekstVak = new TextField(3);
    GetaldrieTekstVak.setEditable (true);
    add(GetaldrieTekstVak);

    Getaleenvast = new Checkbox ("Vast 1");
    Getaleenvast.addItemListener(new VastHandlereen());
    add(Getaleenvast);

    Getaltweevast = new Checkbox ("Vast 2");
    Getaltweevast.addItemListener(new VastHandlertwee());
    add(Getaltweevast);

    Getaldrievast = new Checkbox ("Vast 3");
    Getaldrievast.addItemListener(new VastHandlerdrie());
    add(Getaldrievast);

  }

  class GooiHandler implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      int worp;
      int worp2;
      int worp3;

      worp=(int) (6*Math.random()+1);


      worp2=(int) (6*Math.random()+1);


      worp3=(int) (6*Math.random()+1);

      GetaleenTekstVak.setText(worp + "");
      GetaltweeTekstVak.setText(worp2 + "");
      GetaldrieTekstVak.setText(worp3 + "");



    }
  }

  class VastHandlereen implements ItemListener {
    public void itemStateChanged(ItemEvent e) {
      isGeklikt1 = (true);
      GetaleenTekstVak.setEditable (false);
      validate();

    }
  }

  class VastHandlertwee implements ItemListener {
    public void itemStateChanged(ItemEvent e) {
      isGeklikt2 = (true);
      GetaltweeTekstVak.setEditable (false);
      validate();
      

    }
  }

  class VastHandlerdrie implements ItemListener {
    public void itemStateChanged(ItemEvent e) {
      isGeklikt3 = (true);
      GetaldrieTekstVak.setEditable (false);
      validate();

    }
  }
}

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Tja, sorry, maar als je niet luisterd naar de adviezen die mensen je proberen te geven, dan kan ik je verder ook niet helpen... 8)7 Het belangrijkste is gewoon dat je begrijpt WAAROM iets niet werkt! Niet zomaar aankomen met: "tja jongens, mijn boolean is kapot, kijk een ff". Beetje inzicht is wel gevraagt!

tip: http://java.sun.com/j2se/1.4.2/docs/api/

* voodooless krijgt kriebels van die code :'(

[ Voor 84% gewijzigd door voodooless op 22-06-2004 16:18 ]

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Ik gebruik wel het advies van jou, maar aangezien ik eeen grote n00b ben kan ik het niet 123 oplossen.

getSelected kan je ook niet gebruiken je moet getState gebruiken.

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Het probleem is dat Getal????TekstVak.setEditable (false); alleen werkt voor de 'speler' die het vakje dan niet meer direct kan veranderen. Maar jijzelf kan dat nog wel met Getal????TekstVak.setText(worp? + "");
Dus je moet het gewoon niet meer veranderen als je weet dat dat niet meer mag.

"Beauty is the ultimate defence against complexity." David Gelernter


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Verwijderd schreef op 22 juni 2004 @ 16:18:
Ik gebruik wel het advies van jou, maar aangezien ik eeen grote n00b ben kan ik het niet 123 oplossen.

getSelected kan je ook niet gebruiken je moet getState gebruiken.
Daar merk ik dan in ieder geval weinig van...

getSelected werkt ook alleen op een CheckBox :X

Vooruit, ik zal nog een poging wagen:

Voor iedere knop (die eigenlijk allemaal hetzelfde doen) een eigen listenerclasse maken is wel erg vies. Je had de oude situatie ook kunnen laten en dan met e.getSource() kunnen opvragen van welk Object het event af komt. Je kunt ook een Listener maken waar je de button in de constuctor meegeeft. Dat is nog de netste methode.

Verder let je in je GooiHandler helemaal niet op die booleans die je door de buttons op true zet, dus het kan ook al helemaal niet werken.

Ik zou het zo doen:

pseudocode:
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
Class gokkast extends ActionListener{

   init(){
      plaats_Button("gooi");
      Button.addActionListener(this);
      plaats_tekstbox1();
      plaats_tekstbox2();
      plaats_tekstbox3();
      plaats_CheckBox1("vast 1");
      plaats_CheckBox2("vast 2");
      plaats_CheckBox3("vast 3");
   }

   actionPerformed(event e){
      if(!CheckBox1.getSelected()){
         new_getal_in_tekstbox1();
      }
      if(!CheckBox2.getSelected()){
         new_getal_in_tekstbox2();
      }
      if(!CheckBox3.getSelected()){
         new_getal_in_tekstbox3();
      }
      //....zooi die je verder nog wil doen na een worp, zoals eval van score, reset e.d.
   }
}


Aangezien actionPerformed maar het event van een knop afvangt, hoef je de souce niet op te vragen. Vind je de checkbox niet mooi, dan kun je zelf een button extenden met de functionaliteit van een checkbox (door bv de kleur aan te passen van de button bijvoorbeeld). Je kunt dan ook zelf je eigen button een getSelected methode geven.

Zo, maar nu is het even genoeg, ik ga op huis aan ;)

[ Voor 48% gewijzigd door voodooless op 22-06-2004 16:41 ]

Do diamonds shine on the dark side of the moon :?


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Trouwens, ik kan 100 dingen opnoemen die ik anders zou doen, net als deepspace, maar daar gaat je proggie niet van werken. Als je een student van me was had je een onvoldoende gekregen, maar dat ben je niet, dus je hebt geluk ;)

"Beauty is the ultimate defence against complexity." David Gelernter


  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Volgens mij doet die setEditable alleen dat JIJ als gebruiker dat tekstvak niet kan aanpassen, je prog zelf kan dit volgens mij dan nog wel.

My personal videoteek: -Clique-; -NMe- is een snol!


Verwijderd

Topicstarter
Macros zou je dat even voor je willen houden dat soort praat houd ik echt niet van.

Er zijn wel tientallen manieren.

En dan noemt zich een leraar zonder respect om zijn leerling verder te helpen :( ...

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Verwijderd schreef op 22 juni 2004 @ 18:43:
Macros zou je dat even voor je willen houden dat soort praat houd ik echt niet van.

Er zijn wel tientallen manieren.

En dan noemt zich een leraar zonder respect om zijn leerling verder te helpen :( ...
Ik kan de reactie van Macros wel begrijpen B) Maarja, je zegt zelf dan je noob bent, en dus moet je nog leren en mag je dus ook fouten maken. Die onvoldoende kan op den duur een voldoende worden :)

Hoe: door goed te begrijpen waar je nu mee bezig bent, en door van te voren uit te denken (eventueel opschijven in bv UML) hoe het nu zou moeten werken. Dan ben je gericht met het oplossen van een probleem bezig! Neem de api erbij (waar ook vaak links in staan naar voorbeelden), en bekijk goed welke functies je hebt en wat ze precies doen.

Do diamonds shine on the dark side of the moon :?


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Hier een stukje code dat je op weg zou moeten helpen. Het is geen Applet maar een JFrame, maar je moet dat wel eenvoudig kunnen omzetten:

http://deepspace9.xs4all.nl/download/Test.java

Het is natuurlijk verre van optimaal en hier en daar kan het nog wat netter, maar dit is in ieder geval een werkende basis die eenvoudig te snappen is naar mijn idee.

[ Voor 32% gewijzigd door voodooless op 22-06-2004 19:44 ]

Do diamonds shine on the dark side of the moon :?


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Verwijderd schreef op 22 juni 2004 @ 18:43:
Macros zou je dat even voor je willen houden dat soort praat houd ik echt niet van.

Er zijn wel tientallen manieren.

En dan noemt zich een leraar zonder respect om zijn leerling verder te helpen :( ...
Ik ben geen leraar, en ik zei dat omdat het gewoon zo is. Vooral omdat de mensen die ik leer programmeren aan moet leren hoe ze OO moeten programmeren.
Ik heb je al verder geholpen om je meest directe fout te verhelpen (dat je dat niet wilt zien is niet mijn probleem). Als ik je alles moest vertellen dan zou ik een mega post moeten schrijven en daar heeft niemand zin in.
Als je echt Java wilt leren moet je een goed boek kopen/lenen. Helaas zijn niet alle boeken super goed. Boek dat wordt gebruikt door mijn 'studentjes' is vrij brak, maar ja, je kan niet alles hebben. :)

PS. Ik ben studentassistent, ik beoordeel simpele Java programma's op leesbaarheid, fouten, commentaar, toepassing van conventies en elegantie ;)

"Beauty is the ultimate defence against complexity." David Gelernter


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Macros schreef op 22 juni 2004 @ 20:03:
[...]
Als je echt Java wilt leren moet je een goed boek kopen/lenen. Helaas zijn niet alle boeken super goed. Boek dat wordt gebruikt door mijn 'studentjes' is vrij brak, maar ja, je kan niet alles hebben. :)
Goed boek: download "thinking in java": http://bruceeckel.abrandnewday.org/ van Bruce Eckel. Is een prima boek om mee te beginnen :)
PS. Ik ben studentassistent, ik beoordeel simpele Java programma's op leesbaarheid, fouten, commentaar, toepassing van conventies en elegantie ;)
My condolences :+ (nu ga ik vast commentaar krijgen op mijn crappy, in 10 min inelkaar geflanste code ;) )

[ Voor 10% gewijzigd door voodooless op 22-06-2004 20:17 ]

Do diamonds shine on the dark side of the moon :?


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Soms moet je maar gewoon zuchten, het goedkeuren en hopen dat ze later nog wat meer erbij leren :)

"Beauty is the ultimate defence against complexity." David Gelernter


Verwijderd

Topicstarter
Zeker dat brakke boek van En dan is er... Java - Van Gertjan Laan...

Booleans staan daar in 3 zinnen beschreven en zo onduidelijk, en als ik aan de leraar vraag dan weet ie zelf amper waar hij over praat en kom ik geen ene stap verder _/-\o_ .

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Nee, ze gebruiken Java Elements van Bailey. Die gast moeten ze ook snel neerschieten ;)

"Beauty is the ultimate defence against complexity." David Gelernter


Verwijderd

Topicstarter
en nog thnx deepspace hier zla ik zeker wta aan hebben!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Verwijderd schreef op 23 juni 2004 @ 17:08:
en nog thnx deepspace hier zla ik zeker wta aan hebben!
Je hebt er nog meer aan om een goed boek te bekijken ;) Zie link ergens hierboven :)

Do diamonds shine on the dark side of the moon :?


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Hier heb ik een stukje code wat wel zou werken denk ik en kijk nu eens goed wat er anders is. Code voorkauwen is makkelijk maar zeker niet goed om te leren. Alleen als je het echt niet meer ziet is het soms wel verhelderend, dus geef het je toch maar. Weet niet goed of het werkt, omdat ik zelf nog nooit met java heb gewerkt, maar wel andere programmeertalen.

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
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
89
90
91
92
93
94
95
96
97
98
99
100
package untitled2;

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

public class Applet1 extends Applet {
  private TextField GetaleenTekstVak, GetaltweeTekstVak, GetaldrieTekstVak;
  private Button GooiKnop;
  private Checkbox Getaleenvast, Getaltweevast, Getaldrievast;
  private boolean isGeklikt1, isGeklikt2, isGeklikt3;

  public void init() {
    isGeklikt1 = false;
    isGeklikt2 = false;
    isGeklikt3 = false;
    
    GooiKnop = new Button("Gooi");
    GooiKnop.addActionListener(new GooiHandler());
    add(GooiKnop);

    GetaleenTekstVak = new TextField(3);
    GetaleenTekstVak.setEditable (true);
    add(GetaleenTekstVak);

    GetaltweeTekstVak = new TextField(3);
    GetaltweeTekstVak.setEditable (true);
    add(GetaltweeTekstVak);

    GetaldrieTekstVak = new TextField(3);
    GetaldrieTekstVak.setEditable (true);
    add(GetaldrieTekstVak);

    Getaleenvast = new Checkbox ("Vast 1");
    Getaleenvast.addItemListener(new VastHandlereen());
    add(Getaleenvast);

    Getaltweevast = new Checkbox ("Vast 2");
    Getaltweevast.addItemListener(new VastHandlertwee());
    add(Getaltweevast);

    Getaldrievast = new Checkbox ("Vast 3");
    Getaldrievast.addItemListener(new VastHandlerdrie());
    add(Getaldrievast);

  }

  class GooiHandler implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      int worp;
      int worp2;
      int worp3;

      if (!isGeklikt1)
      {
        worp=(int) (6*Math.random()+1);
        GetaleenTekstVak.setText((string) worp);
      }
      if (!isGeklikt2)
      {
    worp2=(int) (6*Math.random()+1);
        GetaltweeTekstVak.setText((string) worp2);
      }
      if (!isGeklikt3)
      {
    worp3=(int) (6*Math.random()+1);
        GetaldrieTekstVak.setText((string) worp3);
      }

    }
  }

  class VastHandlereen implements ItemListener {
    public void itemStateChanged(ItemEvent e) {
      isGeklikt1 = (true);
      GetaleenTekstVak.setEditable (false);
      validate();

    }
  }

  class VastHandlertwee implements ItemListener {
    public void itemStateChanged(ItemEvent e) {
      isGeklikt2 = (true);
      GetaltweeTekstVak.setEditable (false);
      validate();
      

    }
  }

  class VastHandlerdrie implements ItemListener {
    public void itemStateChanged(ItemEvent e) {
      isGeklikt3 = (true);
      GetaldrieTekstVak.setEditable (false);
      validate();

    }
  }
}


edit:
Heb nu ff die + "" weggehaald, want dat was gewoon nutteloos.
En heb er ff (string) voor gezet (noemen ze toch casten :?) omdat ik anders niet weet hoe je in java een integer naar string omzet, maar daar kom je wel uit.

[ Voor 7% gewijzigd door eghie op 23-06-2004 22:59 ]


  • Aspje
  • Registratie: November 2002
  • Laatst online: 05-11-2024

Aspje

Blaat

eghie schreef op 23 juni 2004 @ 20:30:
edit:
Heb nu ff die + "" weggehaald, want dat was gewoon nutteloos.
En heb er ff (string) voor gezet (noemen ze toch casten :?) omdat ik anders niet weet hoe je in java een integer naar string omzet, maar daar kom je wel uit.
Om een int naar een String te casten gewoon "" ervoor of "" erachter. daarvoor is het :P Niet elke methode is beschikbaar voor zowel Strings als ints.

Ten tweede, als je cast zorg dan dat je goed cast :) "String" is een object en dus met hoofdletter (jaaa java = case sensitive ;))

Zo dus:
code:
1
GetaleenTekstVak.setText((String) worp);

[ Voor 21% gewijzigd door Aspje op 24-06-2004 09:45 . Reden: typo ]


Verwijderd

Topicstarter
Nu doet ie het perfect alleen heb ik ik weer een volgens probleem:
jackpot staat er altijd en die mag alleen verschijnen als alle cijfers gelijk zijn.

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package untitled3;

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

public class Applet1 extends Applet {
  TextField GetaleenTekstVak, GetaltweeTekstVak, GetaldrieTekstVak, JackPotVak;
  Button GooiKnop;
  Checkbox Getaleenvast, Getaltweevast, Getaldrievast;
  boolean isGeklikt1, isGeklikt2, isGeklikt3;
  int worp, worp2, worp3;

  public void init() {
    isGeklikt1 = false;
    isGeklikt2 = false;
    isGeklikt3 = false;

    worp=0;
    worp2=0;
    worp3=0;

    GooiKnop = new Button("Gooi");
    GooiKnop.addActionListener(new GooiHandler());
    add(GooiKnop);

    GetaleenTekstVak = new TextField(3);
    GetaleenTekstVak.setEditable (true);
    add(GetaleenTekstVak);

    GetaltweeTekstVak = new TextField(3);
    GetaltweeTekstVak.setEditable (true);
    add(GetaltweeTekstVak);

    GetaldrieTekstVak = new TextField(3);
    GetaldrieTekstVak.setEditable (true);
    add(GetaldrieTekstVak);

    Getaleenvast = new Checkbox ("Vast 1");
    Getaleenvast.addItemListener(new VastHandlereen());
    add(Getaleenvast);

    Getaltweevast = new Checkbox ("Vast 2");
    Getaltweevast.addItemListener(new VastHandlertwee());
    add(Getaltweevast);

    Getaldrievast = new Checkbox ("Vast 3");
    Getaldrievast.addItemListener(new VastHandlerdrie());
    add(Getaldrievast);
  }

  public void paint (Graphics g) {
    if (worp == worp2 && worp2 == worp3 && worp3 == worp) {
      g.drawString("Jackpot", 100, 100);
    }
  }

  class GooiHandler implements ActionListener {
    public void actionPerformed (ActionEvent e) {
      int worp;
      int worp2;
      int worp3;

      if (!isGeklikt1) {
          worp=(int) (6*Math.random()+1);
          GetaleenTekstVak.setText("" + worp);
      }
      
      if (!isGeklikt2) {
          worp2=(int) (6*Math.random()+1);
          GetaltweeTekstVak.setText("" + worp2);
      }
      
      if (!isGeklikt3) {
        worp3=(int) (6*Math.random()+1);
        GetaldrieTekstVak.setText("" + worp3);
      }
    }
  }

  class VastHandlereen implements ItemListener {
    public void itemStateChanged (ItemEvent e) {
      isGeklikt1 = (true);
      GetaleenTekstVak.setEditable (false);
      validate();
    }
  }

  class VastHandlertwee implements ItemListener {
    public void itemStateChanged (ItemEvent e) {
      isGeklikt2 = (true);
      GetaltweeTekstVak.setEditable (false);
      validate();
    }
  }

  class VastHandlerdrie implements ItemListener {
    public void itemStateChanged (ItemEvent e) {
      isGeklikt3 = (true);
      GetaldrieTekstVak.setEditable (false);
      validate();
    }
  }  
}

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Dat komt volgens mij omdat je de tekst niet weghaald als de conditie in paint() niet waar is, dat zou je op kunnen lossen door een else erbij te zetten.
Maar het is denk ik handiger om daar een label voor te gebruiken, want ik meen mij te herinneren dat drawString gewoon over je oude tekst heen gaat.

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


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Yep, je moet super.paint(g) nog ff aanroepen, anders update je het scherm helemaal niet ;)

verder:
Java:
1
if (worp == worp2 && worp2 == worp3 && worp3 == worp)


Als worp gelijk is aan work2 en work2 gelijk aan worp3, dan is work3 autogamisch gelijk aan worp, die laatste kun je dus gewoon weglaten ;)

Verder, die validate() is niet echt nuttig (Zo laat je het component weten dat de layout verfucked is en dat ie die de volgende keer maar ff opnieuw moet uitrekene), kun je dus gewoon weglaten. SetEditable kan altijd op false staan, ik neem niet aan dat de user zelf een getal mag invullen. Die drie itemslisteners heb je niet nodig, in de GooiHandler kun je de Checkbox value gewoon opvragen, scheelt een hoop nutteloze code, zeker als je 3 handlers maakt die alledrie eigenlijk hetzelfde doen. Dat is natuurlijk niet de bedoeling van OO proggen (of proggen in het algemeen).

Verder: Ik gloof er niets van dat al die componenten (button, checkboxen en tekstvlakken) zeer gebruikersvriendelijk gepositioneerd staan, Kijk eens naar een layout manager!

[ Voor 12% gewijzigd door voodooless op 24-06-2004 12:29 ]

Do diamonds shine on the dark side of the moon :?


  • Verbal Kint
  • Registratie: Januari 2001
  • Laatst online: 27-05-2025

Verbal Kint

The man with the plan

Tip:
Op het moment dat je in je code 4x 3 maal hetzelfde ziet staan, op een specifieke variabelenaam na, is het een goed moment om over array's na te gaan denken. dus:
code:
1
2
3
4
5
int aantalKnoppen  x = 3;
private Tekstfield[x] getalTekstVak = null;
private CheckBox[x] getalVast = null ;
private boolean[x] isGeklikt = null;
private int[x] worp = null;


Vervolgens kun je met een mooi for loopje je code veel schaalbaarder maken. Stel je maar eens voor hoe jouw code er uit komt te zien als je 10 knoppen hebt, of 100, of 1000...
code:
1
2
3
4
5
6
for (int i = 0; i < getalTekstVak.length; i++)
{
    getalTekstVak[i] = new TextField(3);
    getalTekstVak[i].setEditable (true);
    add(getalTekstVak[i]);
}

Great minds think alike!

Pagina: 1