【发布时间】:2012-11-08 17:33:31
【问题描述】:
我正在用 java swing 做一个应用程序。在应用程序的一个按钮中,我需要每隔 x 分钟做一些事情。 我认为我必须用一个新线程来做,但我有两个问题。首先是我必须向这些线程传递一个参数。我用一个扩展线程和构造函数的类解决了它。我认为这些方式是正确的,不是吗? 我无法解决的第二件事是我需要在线程运行时更新 jtextpane 但如果我尝试更新 JTextPane 属性 Eclipse 说我无法解决。我认为问题在于这些线程不是主线程。但是……有办法解决吗? 非常感谢和对不起我的英语!
代码是:
btnIniciar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//String file = "D:\\prueba.torrent";
// while (true) {
Hilo ejecutar = new Hilo(listaBuscar);
ejecutar.run();
public class Hilo extends Thread {
public Hilo(List<String> aBuscar){
}
public void run(){
System.out.println("Trabajo por hacer dentro de MiHilo");
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
lblNewLabel.setText("hola");
}
});
}
}
它说我 lblNewLabel 无法解析。
有什么帮助吗? 谢谢
我现在正在尝试使用这些代码,但不起作用:
public class Hilo implements Runnable {
private JLabel etiqueta;
public Hilo (List <String> aBuscar, JLabel label){
System.out.println("Hemos entrado en el puto hilo");
etiqueta = label;
}
@Override
public void run() {
etiqueta.setText("hola");
System.out.println("vamos a coneseguirlo");
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
etiqueta.setText("hola");
System.out.println("vamos a coneseguirlo");
}
});
}
}
【问题讨论】:
-
最好发布一个你尝试过的小例子。请参阅 sscce.org 另外,请参阅 docs.oracle.com/javase/tutorial/uiswing/concurrency/…,因为这可能会回答您关于 Swing UI 中的线程的大部分问题。
-
我用代码编辑问题。 T