[Java] Events zonder GUI

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

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Ik ben aan het proberen te werken met een specifieke API. Deze API maakt vooral gebruik van Interfaces en Events.

Nu ben ik niet bijzonder bedreven met deze onderwerpen maar ik denk stukje bij beetje verder te komen. Ik ben nu zover dat ik een eventlistener goed heb geregistreerd (code geeft iig geen errors). Maar ik weet nu niet hoe ik dit moet testen. Wat ik van events heb gezien lijken ze zich vooral te richten op GUI's maar in mijn applicatie is geen GUI nodig. De events zijn in mijn geval het beschikbaar komen en verdwijnen van objecten.

Mijn vraag is dan ook hoe ik zonder GUI gebruik kan maken van events. Op dit moment start ik mijn main class dei op zijn beurt een andere klasse aanroept die de listener in zich heeft. Maar ik weet dus niet hoe ik die klasse kan blijven laten luisteren...

[ Voor 10% gewijzigd door Deddiekoel op 09-09-2004 14:54 ]

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wat ik van events heb gezien lijken ze zich vooral te richten op GUI's maar in mijn applicatie is geen GUI nodig. De events zijn in mijn geval het beschikbaar komen en verdwijnen van objecten.
Een event is gewoon een gebeurtenis, en is helemaal niet gelimiteerd aan GUI werk.
Kun je eens een code voorbeeld geven trouwens?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
.oisyn schreef op 09 september 2004 @ 14:55:
[...]


Een event is gewoon een gebeurtenis, en is helemaal niet gelimiteerd aan GUI werk.
Kun je eens een code voorbeeld geven trouwens?
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
public class AFI001Controller {
    
    Vector agents = new Vector(0);
    
    public AFI001Controller() {
    }
    
    public void init(){
        System.out.println("Start listening for agents...");
        try{
            Console thc = new Console("AFITEST", "7474", ";", "tcp:7474");         
            AgentMonitor am = thc.getAgentMonitor();
            am.addAgentMonitorListener(new AgentMonitorListener() {
                public void onAgentAlive(AgentMonitorEvent agentMonitorEvent){
            addAgent(agentMonitorEvent);
            System.out.println(agentMonitorEvent.getAgentInstance().getAgentID().getName()+" is ALIVE!!");
                }
                public void onAgentExpired(AgentMonitorEvent agentMonitorEvent){
                    addAgent(agentMonitorEvent);
                    System.out.println(agentMonitorEvent.getAgentInstance().getAgentID().getName()+" has left the building...");
                }
            });
        }
        catch(Exception e){
            e.printStackTrace();
        }      
         System.out.println("Done listening for agents...");
   }
    
    private void addAgent(AgentMonitorEvent agentMonitorEvent){
        agents.add(agentMonitorEvent.getAgentInstance());
    }
    private void remAgent(AgentMonitorEvent agentMonitorEvent){
        agents.remove(agentMonitorEvent.getAgentInstance());
    }
}

[ Voor 6% gewijzigd door Deddiekoel op 09-09-2004 15:01 ]

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Oh ik snap het al. Het punt is dat die events in een andere thread gerunt worden. Je zult je main thread dus levend moeten houden totdat je zeker weet dat je je applicatie af wilt sluiten.

Tip: gebruik [rml][ code=java]...[ /code][/rml] voor syntax highlighting

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • kasper_vk
  • Registratie: Augustus 2002
  • Laatst online: 08-04-2025
Bedoel je wellicht dat je progje direct weer eindigd na het starten?

In dat geval zul je een mechanisme moeten maken waardoor je programma niet afsluit, maar gewoon blijft wachten. In het eenvoudigste geval gewoon door zoiets in je progje op te nemen:
Java:
1
2
3
4
5
boolean keepRunning = true;

while (keepRunning) {
this.wait(1000);
}

Overigens neem ik dus aan dat de JVM een aparte event-handling thread verzorgt, net zoals de situatie met GUI's. Events blijven idd immers gewoon events, met of zonder grafisch jasje.

edit:
oops, beetje laat ;)

[ Voor 5% gewijzigd door kasper_vk op 09-09-2004 15:07 ]

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Ik gebruik niet opzettelijk een Thread....

Mijn mainClass instatieert alleen bovenstaande klasse. Maar als ik mijn mainclass dus levend hou dan moet hij iets gaan opleveren!

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2

Pagina: 1