Toon posts:

[JAVA] awt TextField wel waarde maar geen ui

Pagina: 1
Acties:

Verwijderd

Topicstarter
GoeieMorgen beste tweakers,

Ik moet nu stagelopen en ben bezig met een projectje met java, ik ben hier redelijk gemiddeld in.
Het projectje houd in een soort van input machine te maken zodat dit straks op een touch screne kan.

Wat ik dus heb gemaakt is een choice menu met een cardlayout eraan vast. ook zit hiero onder een klasse dat een nummerboard weergeeft.

Okey nu het probleem, ik heb voor menu een aparte klasse, in deze klasse verwijz ik naar de klasse die voor mij de cardlayout verwerkt:


Klasse MenuBoard:
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
 private void jbInit() throws Exception {

        this.add("North", menu);
        this.add("Center", menuCards);

    }
    
    public void MenuCards(String button) {
        this.button = button;
        menuCards.SetNum(button);
        menuCards.DoAction();
        return;
    }

    public boolean action(Event e, Object o) {
        if (e.target instanceof Choice) {
            if (first == 0) {
                menu.remove("Maak hier u Menu Keuze");
                first = 1;
            }
            menuItem = (String) o;
            if ("Route".equals(menuItem)) {
                menuCards.SetCard("kaart1");
            }
            if ("Speciale Route".equals(menuItem)) {
                menuCards.SetCard("kaart2");
            }
            if ("Service Berichten".equals(menuItem)) {
                menuCards.SetCard("kaart3");
            }


Hier het belangrijke gedeeltje van de code, menuCards is in dit geval de neiuwe klasse waar de cardlayout in zit.

De cardlayout werkt perfect hij gaat van kaart1 naar 2, maar in kaart 2 zit een formulier waar ik dmv een textField de nummers meot invoeren met de nummerboard die ik in een aparte klasse heb staan.
Klasse NumBoard
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        this.add(seven);
        this.add(acht);
        this.add(negen);
        this.add(del);
        this.add(nul);
        this.add(clear);
    }


    public boolean action(Event e, Object o) {
        if (e.target instanceof Button) {
            Button buttonPressed = (Button) e.target;
            button = buttonPressed.getName();

            menuBoard.MenuCards(button);
            return true;
        }
        else
            this.update(this.getGraphics());
        return false;

    }
}


Het belangrijke gedeelte v.d. code.

En nu komt het deel waar ik alles verwerk end at is de klasse vna de cardlayout:
Klasse: MenuCard
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
        this.add(cl, new XYConstraints( -1, 0, 613, 300));
        this.setBackground(new Color(242, 255, 255));
    }



    public void SetCard(String card) {
        this.card = card;
        target = 1;
       return;
    }

    public void SetNum(String button) {
        
        this.update(this.getGraphics());
        target =2;
        this.button = button;System.out.println(target);
        return;
    }
    
    public void DoAction () {
        if(target == 1) {
            cards.show(cl, card);
            test.setText("test 1");
            target =0;
            trNummer.setText("32434");
            System.out.println("target 1");
            
        }
        if(target == 2) {
            trNummer.setText("45");
            test.setText("test 2");
              System.out.println("target 2");
              target = 0;
        }

        return;

    }


}


Wat ik dus gedanaheb is gewoon setText aangemaakt eerst in de eerste thread aanroep voor de menucar switchen waarbij die wel de textfield weergeeft, maar als ik nu een button druk om ind it geval 45 in de field te weergeven doet ie dat niet, wat ie wel doet is het weergeven van het jusite getal in system.println getText .. etc hierin geeft hij telkens aan dat textField wel word geupdate, maar op het scherm zelf zie je dit niet.

Beetje langdradig verhaal maar anders kwam het mssn niet over, hbe het zo kort mogelijk gemaakt ;)

Verwijderd

Ik ben niet helemaal thuis in java, eigenlijk helemaal niet, maar het klinkt alsof je een canvas bent vergeten te updaten ( revalidate() ). Onderstaande link kan je misschien verder helpen:
JavaWorld

Verwijderd

Topicstarter
hmmm dit is wel swing en revalidate(); zit in swing en niet awt.. maar bedankt het helpt me mssn al wat meer op weg :D

[ Voor 47% gewijzigd door Verwijderd op 22-09-2006 11:42 ]


  • GTOfire
  • Registratie: November 2001
  • Laatst online: 12-12-2025

GTOfire

Don't warn the tadpoles

misschien is het niks, maar ik heb zelf wel eens last gehad van een niet-updatende swing UI omdat mn windowblinds theme liep te mauwen. Dan ziet mn windows dr prachtig mooi uit met alpha randjes en weet ik wat, maar als ik mn java progje verplaats is ineens de UI pleite of lijkt ie niet meer te updaten, alsof ie gewoonweg niet meer weet wat ie wil tekenen op het scherm.
Mocht je een theme hebben, en dan met name windowblinds, zet het ff uit en check het dan nog eens. Ik heb zelf nl met mijn gelimiteerde java ervaring nog niet aangeleerd dat ik na een jtextfield.settext() iets zou moeten updaten of redrawen of whatever. Als ik een setText() aanroep verandert het gewoon direct op mn scherm, dus in principe als ie wel bij de printline aan komt die onder de setText() staat zou dat het probleem niet mogen zijn.

De aarde draait terwijl ik stil sta. Dus de wereld draait om mij. QED


Verwijderd

Topicstarter
Nee ik zit gewoon op mijn stage bedrijf, gewoon win xp pro. Maar wederom ik gebruik java.awt en geen swing (is de opdracht) dus vandaar... als je swing onder de controle hbet gaat het mekklijker, had allene ngo nooit zo goed met awt gewerkt......:S