【发布时间】:2016-04-09 04:56:55
【问题描述】:
我有 class1 和 class2。 Class1 是一个 UI,class2 对 UI 进行更改。 Class2 如下所示。
1)有没有办法让整个class2使用class1的对象(JButton btnStartFullBuild, JButton btnShutdownServer等)
2) 如何允许线程更改 Class1 中按钮的背景颜色
(使用:btnShutdownServer.setBackground(Color.blue);)
package examples;
import java.awt.Color;
import javax.swing.JButton;
public class Class2 {
public static void shutdownServer(JButton btnStartFullBuild, JButton btnShutdownServer) {
// This works
btnShutdownServer.setBackground(Color.blue);
// This works when passing text, but I cant modify other classes buttons
new ThreadTest("Can I modify a button?").start();
}
}
class ThreadTest extends Thread {
public ThreadTest(String str) {
super(str);
}
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("Loop " + i + ": " + getName());
try {
sleep((int) (Math.random() * 2000));
} catch (InterruptedException e) {
}
}
}
}
【问题讨论】:
-
你应该知道 Swing 绝对不是线程安全的。虽然您正在做的事情可能会或可能不会奏效,但这样做并不是一个好主意。
-
我意识到我复制了一部分没有运行的代码。在我编辑了实际运行的代码部分后它就起作用了(我已经做了很多更改)
标签: java multithreading swing