【发布时间】:2019-04-29 16:57:34
【问题描述】:
我正在创建一个程序来同时 ping 多个计算机实验室。在主 UI 上,根据所有计算机是否都可以 ping 通,有红色或绿色的图像。当我调用 pingAllLabs 方法时,它会正确地将它们更改为红色或绿色,但在最后而不是在每个完成时立即全部更改。
This stackOverflow answer 非常相似,但我不能/不知道如何实现它
这是执行 ping 的代码。在 Lab 类中,它创建了一个包含损坏的 PC 名称字符串的数组列表。
@FXML
public void pingAllLabs() throws IOException{
for (int i = 0;i<list.listOfLabs.size();i++{
list.listOfLabs.get(i).printBroke(fileName);
updateImages(list.listOfLabs.get(i),i);
}
}
这是实际更改图像的代码。它从实验室检索发送给它的损坏电脑的数组列表,如果列表不为空,它将图像数组列表中的图像更改为红色,或者如果列表为空,则将其更改为绿色。
@FXML
public void updateImages(Lab lab,int i){
Image red = new Image("RedComp.png");
Image green = new Image("GreenComp.png");
ArrayList<String> list = lab.getBrokenList();
if (!list.isEmpty()){
images.get(i).setImage(red);
System.out.println("Setting "+lab.getName()+" to red");
}
else{
System.out.println("Setting to green");
images.get(i).setImage(green);
}
}
【问题讨论】:
-
使用
Timeline。 stackoverflow.com/questions/9966136/… -
目前还不清楚发生了什么。我是否可以说有多个实验室,每个实验室都有多台计算机,并且每台计算机(具有可 ping 状态)都由 GUI 上的图像表示?如果是这样,那么现在 GUI 会立即更新 single 实验室中的所有计算机,还是更新 所有 实验室中的所有计算机?
标签: java javafx javafx-8 scenebuilder