【发布时间】:2014-05-28 19:40:23
【问题描述】:
我正在使用 FXMLController 和场景构建器在 JavaFX 中对此进行编码。 我目前正在创建一个 Instagram“喜欢者”,主要是为了练习,因为我是计算机科学专业的,我只是喜欢编码。
我的问题是,我有一个 for 循环,可以为每个主题标签“点赞”20 张照片,我显然需要延迟,否则我很快就会被禁止。用户可以选择延迟,然后我将这个延迟随机化,这样就不会太机械化了。
我能够使用此延迟的唯一方法是通过 thread.sleep 方法,但由于我在 FXMLController 上进行编码,它会冻结整个 UI,并以某种方式阻止其他文本区域被更新。这显然不理想。
我到处寻找替代方法,但找不到任何适用于我的程序的方法。
我会给出整个方法:
private void start() {
sleepWhen();
tagNumber++;
int delays = Integer.valueOf(delay.getText());
delays = delays * 1000;
if (loaded) {
runTime.clear();
runTime.appendText("Liking...");
for (int i = 0; i < 20; i++) {
webEngine.executeScript("document.getElementsByClassName('btn btn-default btn-xs likeButton')[" + i + "].click()");
try {
double random = Math.random() * 1000;
random = random + delays;
delays = (int) random;
System.out.println(delays);
likes++;
likesNumber.clear();
likesNumber.appendText(String.valueOf(likes));
System.out.println(String.valueOf(likes));
Thread.sleep(delays);
delays = Integer.valueOf(delay.getText());
delays = delays * 1000;
} catch (InterruptedException ex) {
//do nothing
}
System.out.println("tag number" + tagNumber + "numbertags" + numberTags);
if (!sleep) {
if (tagNumber < numberTags) {
System.out.println("Loading tag:" + tagNumber);
loadTag(tagNumber);
}
}
}
}
}
这喜欢 20 张照片,然后加载另一个主题标签,然后重复。
对此的任何帮助都会很棒,谢谢。
【问题讨论】:
标签: java for-loop javafx fxml thread-sleep