大家好,我需要一些帮助 我正在尝试制作网站检查程序并将结果放在Jframe中,但它似乎比我想象的更难 因为当我在Jframe中使用Thread进行循环时,Jframe冻结并且没有任何工作..有一个简单的原因吗? 抱歉我的英语不好..我是你在叙利亚的朋友:) 这是我的代码
private void formWindowActivated(java.awt.event.WindowEvent evt) {
while(true)
{
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
try{
InetAddress[] addresses = InetAddress.getAllByName("www.google.com");
for (InetAddress address : addresses) {
if (address.isReachable(10000))
{
t1.setText("okay");
System.out.println("Connected "+ address);
}
else
{
System.out.println("Failed "+address);
}
}
}catch ( Exception e )
{}
}
答案 0 :(得分:2)
不要在侦听器中使用Thread.sleep()。此代码将在Event Dispatch Thread (EDT)
上执行,Swing Worker
是负责处理事件和重新绘制GUI的线程。通过使用sleep(),可以防止GUI响应事件并重新绘制自身。
相反,您需要创建一个单独的线程来进行网站检查。
阅读Concurrency in Swing上Swing教程中的部分以获取更多信息。您可能应该使用教程中描述的{{1}}。