Mon, 21 Aug 2006 16:23:53 +0200
Köteles Ferenc <aksucef@freemail.hu>
thread sleep kérdés
Sziasztok, új vagyok itt a listán, üdvözlök mindenkit.
Egy olyan swing-es progit csinálgatok, aminek gombnyomásra ki kellene
írni valamit (példánkban: "Vasárnap"), majd várni 2 mp-et és
átírni
valami másra ("Hétfő"). Próbáltam csak a késleltetést és a
második
kiírást külön szálba tenni, végső kétségbeesésemben az
első kiírásnak is
csináltam egy külön szálat, de sehogy nem jelenik meg a "Vasárnap
", a
gomb megnyomása után 2 mp szünet, majd "Hétfő". Ugyanakkor konzol
on
(System.out.println) minden az elképzelés szerint dolgozik, vagyis a GUI
frissítésével lehet probléma. Bemásolom az egész kódot, bocs,
ha túl
hosszúnak számít. A rendszer debian sarge és sun-féle jdk 1.4.2.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Thread.*;
public class Implicit extends JFrame implements ActionListener {
JLabel l;
JPanel p;
MyThread t;
MyThread2 t2;
public static void main(String args[]) throws InterruptedException {
Implicit i = new Implicit(args);
}
Implicit(String args[]) throws InterruptedException {
super("Milyen nap van ma?");
p = new JPanel();
p.setLayout(new BorderLayout());
l = new JLabel("", JLabel.CENTER);
JButton again = new JButton("New try!");
again.addActionListener(this);
JButton exit = new JButton("Exit");
exit.addActionListener(this);
JPanel bp = new JPanel();
bp.add(again);
bp.add(exit);
Font myfont = new Font("Serif",Font.BOLD,36);
l.setFont(myfont);
p.add(l, BorderLayout.CENTER);
p.add(bp, BorderLayout.SOUTH);
getContentPane().add(p);
pack();
setSize(400, 400);
setVisible(true);
t = new MyThread(2000);
t2 = new MyThread2();
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Exit"))
System.exit(0);
else
nextTry();
}
void nextTry() {
t2.run();
t.run();
}
class MyThread extends Thread {
int Ms;
MyThread(int ms) {
Ms = ms;
}
public void run() {
try {
sleep(Ms);
l.setText("Hétfő");
System.out.println("Hétfő");
} catch (InterruptedException e) { }
}
}
class MyThread2 extends Thread {
MyThread2() { }
public void run() {
l.setText("Vasárnap");
System.out.println("Vasárnap");
}
}
}
--
Minden jót,
Feca
----------------------------------------
Softwared by Debian GNU/Linux
Just because you're paranoid, it doesn't
mean they're not out to get you.