Hello, ik ben momenteel bezig aan een project in Java (nl. het herschrijven van een Swing-app naar een SWT-app). Ik ben nog maar een 3-tal maanden bezig met java, dus is onderstaand probleem niet zo moeilijk voor java-experts...
Mijn probleem is het volgende...
Ik heb twee klassen:
De eerste (checkText) creert een thread die voordurend loopt naast de main-thread in de andere klasse (DrawText).
Indien we in bovenste code regels 24 tot en met 28 weglaten blijkt de code exact te werken. Ik zou nu graag een methode van de klasse DrawText aanspreken... Ik heb al vele mogelijke manieren uitgeprobeerd maar ik blijk er niet uit geraken. Zo had ik bij voorbeeld de Update-methode in de CheckText-class gezet, maar hierdoor werd mijn applicatie bijzonder traag... Hetzelfde effect kreeg ik toen ik een nieuwe klasse Update maakt...
Kan er iemand mij helpen plz... Hoe kan ik de de Update-method aanspreken vanuit de thread UpdateShell???
groeten, champ
Mijn probleem is het volgende...
Ik heb twee klassen:
De eerste (checkText) creert een thread die voordurend loopt naast de main-thread in de andere klasse (DrawText).
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
| public class CheckText {
private Display display;
private DrawText dt;
public CheckText(){
Display dis = new Display();
UpdateShell s = new UpdateShell(dis);
s.start();
DrawText dt = new DrawText(dis);
s.stop();
}
public class UpdateShell extends Thread
{
public UpdateShell(Display d){
display = d;
}
public void run(){
while (true) {
System.out.println("running...");
display.syncExec(new Runnable() {
public void run() {
dt.Update();
}
});
}
}
}
public static void main(String[] args) {
CheckText c = new CheckText();
}
} |
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
| public class DrawText {
private Display d;
public DrawText(Display display){
d = display;
Shell s = new Shell(d);
GridLayout l = new GridLayout();
s.setLayout(l);
Text t = new Text(s, SWT.BORDER|SWT.SINGLE);
s.setSize(500,100);
s.open();
while(!s.isDisposed()) {
if(!d.readAndDispatch()){
d.sleep();}
}
d.dispose();
}
public void Update(){
System.out.println("Updating...");
}
} |
Indien we in bovenste code regels 24 tot en met 28 weglaten blijkt de code exact te werken. Ik zou nu graag een methode van de klasse DrawText aanspreken... Ik heb al vele mogelijke manieren uitgeprobeerd maar ik blijk er niet uit geraken. Zo had ik bij voorbeeld de Update-methode in de CheckText-class gezet, maar hierdoor werd mijn applicatie bijzonder traag... Hetzelfde effect kreeg ik toen ik een nieuwe klasse Update maakt...
Kan er iemand mij helpen plz... Hoe kan ik de de Update-method aanspreken vanuit de thread UpdateShell???
groeten, champ