public void actionPerformed(ActionEvent e)
{
lasseWhileSchleifeLaufen();
}
public void actionPerformed(ActionEvent e)
{
Thread thread = new Thread(new Runnable()
{
public void run()
{
lasseWhileSchleifeLaufen();
}
});
thread.start();
}
int i = 0;
while(i < 100000){
//irgendwas hier
i++;
}
Ich mit einer do-Schleife.
Vielleicht auch mit einer if-Schleife.
:joke:
Die while-Schleife muss von einem eigenen Thread ausgeführt werden.
is das was ich meinte``Ich glaube er meint eher dass er irgendwo im Programm eine Schleife durchläuft und fragt ob der Listener immer noch auf knopfdruck reagiert während dieser schleife. Hab ich Dich richtig verstanden ?
Also wenn du irgendwo sowas hast:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
int i = 0;
while(i < 100000){
//irgendwas hier
i++;
}
Und du auf ein knopf drückst, während diese Schleife noch in der ausführung ist, dann wird der Listener drauf hören, der Event-Dispatcher wird das Event allerdings erst weitergeben, wenn die Schleife durchgelaufen ist (das gleiche passiert wenn du z.B repaint() in einer schleife aufrufst. Dafür brauchst du je nach dem was du realisieren willst, eigene Threads
hi
danke erstmal
is das was ich meinte``
dann muss ich nur noch wissen, wie das mit den threads geht, aber das krieg ich schon noch raus
danke trotydem an alle
edit> bloede englische schultastatur``
class MyProgram implements Runnable {
public void run() throws java.io.IOException
{
while(true)
{
if(clt.is()==false)
{
hatZeilenbereich1.haengeAn(clt.anfrage_read_only());
}
}
}
}
Thread t;
MyProgram myProg = new MyProgram();
t = new Thread (myProg);
>joke> ich denke er wei- nicht, wie man das kezboard/lazout umstellt. Daf[r musst du in Windows einfach ALT]UMSCHALTEN dr[cken und dein normales lazout ist wieder hergestellt. Wobei es echt schon schickt, mit dem falschen lazout yu schreiben )D.
Ja, der SwingWorker verwendet intern auch Threads.hat den der swing worker die selben vorzüge wie threads,
also das mehrere saschen gleichzeitig ausgeführt werden
Threads lässt man auslaufen, d.h. die run() Methode beenden.2. ich beende den thread später mit dem stop befehl. hab gehört, der soll nich so gut sein, aber weis es nich besser
SwingWorker Tutorialedit:gibt es irgentwo nen gutes tutorial, wenn möglich auf deutsch, in dem der swingworker erklärt wird, kapier den link von weiter oben nich ganz
Java ist auch eine Insel – 7 Exceptionsedit2: einige grundlagen kenn ich wirklich net, so wie try catch, hab von gehört^^
class Foo {
private boolean raketenScharfGeschaltet = false;
...
//da wo du deinen Button definierst:
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
if(raketenScharfGeschaltet) {
raketenStart();
}
}
});
private void raketenStart() {
//WHOOOOOSH!
}
}
class Foo{
private boolean bar = false;
public setBar(boolean b) {
bar = b;
barWurdeGeändert();
}
public void barWurdeGeändert(){
//tu was
}
}
public SuMAnwendung() throws java.io.IOException
{
/** Initialisierung der Oberklasse
*/
super(811, 672);
/** Fenster schließen
*/
hatBildschirm.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
})
;
/** Eingine
*/
clt = new client("5.150.150.211",9513);
/** position
*/
........
/** Spielbereich
*/
......
/** items
*/
.......
/** Ausrichtung
*/
.......
while(true)
{
if(clt.is()==false)//nachricht an client vorhanden?
{
hatZeilenbereich1.haengeAn(clt.anfrage_read_only());
}
}
}
public void Enter() throws java.net.UnknownHostException, java.io.IOException, java.lang.InterruptedException
{
String x = hatTextfeld1.inhaltAlsText();
if(a==0)
{
if (x.startsWith("/ip")==true)
{
String b =x.substring(5);
clt.ipchange(b);
}else
{
clt.anfrage_start(x);
a++;
}
}
else if (a==1)
{
if (x.equalsIgnoreCase("/stop")==true)
{
clt.anfrage_stop();
a--;
beenden();
}
else
{
String Zipp =clt.anfrage_get(x);
hatZeilenbereich1.haengeAn(Zipp);
}
}
}
public void Aus()throws java.io.IOException
{
if (a==1)
{
clt.anfrage_stop();
}
beenden();
}
new Thread(new Runnable(){
public void run(){
while(true) {
if...
Thread.sleep(100); //10x in der Sekude sollte reichen
}
}
}).start();