当前位置: 首页 > 知识库问答 >
问题:

实时更新ListView JavaFX

百里智勇
2023-03-14

我有课:

public class Friends implements Runnable{
private ObservableList<String> friendsList;

public Friends() {
    this.friendsList = FXCollections.observableArrayList();
}

public ObservableList<String> getList(){
    return friendsList;
}
public void start(){
     //run thread here
}
@Override
public void run() {
    //update friendList here
}
Friends vf = new Friends();
ListView_1.setItems(vf.getList());
vf.start();

阅读了手册后,我明白了我们需要在FX线程中刷新UI。我已经使用了platform.runlater(),但是在流结束时UI变慢了。

为我糟糕的英语感到抱歉。

共有1个答案

柯宜年
2023-03-14

很可能您的Friends.run在一个单独的线程上运行,并在那里更新friendsList。但这是不允许的。必须使用platform.runlater(()->{friendslist.setall(newValue;})更新FX应用程序线程上的friendList。

您可以在后台线程中构建newValue,但必须在FX应用程序线程中设置friendsList。

 类似资料:
  • 问题内容: 我正在制作类似于Risk的基于浏览器的多人回合制策略游戏。 现在,做事的最简单方法似乎就是使其像常规网页一样。玩家每次刷新时,网页都会在数据库中查询所需的信息。 这是可以接受的,但我宁愿实时更新页面,因此播放器不必不断刷新页面。 我可以让网页每X秒查询一次数据库,但是我听说这样做效率不高。 最好的方法是什么? 问题答案: 尝试使用Socket.io库或Juggernaut2。您需要使用

  • 问题内容: 我有一个php文件,可打印txt文件的最后50行。但是,此文件每秒钟都会添加一次,并且希望查看该操作的“实时供稿”。如何才能做到这一点?这是php文件的代码: 问题答案: 用ajax。如果需要跨浏览器兼容性,请使用jQuery之类的库中的AJAX函数替换我提供的AJAX函数。 您将必须创建一个名为myphpfile.php的php文件(或更改上面的代码以引用正确的文件),并在其中放入以

  • 问题内容: 我同时使用Javafx和线程,并且遇到了这个问题,我制作了一个按钮,然后单击该按钮(使用事件处理程序)时,我做了一个for循环,将按钮更改为1,2,3,4 ,5,然后在每个中间延迟一秒钟。像倒计时! 但是发生的事情是延迟了5秒钟,并将按钮的文本更改为5。 问题是我希望看到它在1到5之间变化,但我看到的只是在5秒延迟结束时为5。我认为它会更改按钮文本,但看不到。我可能与类中的方法有关。

  • 我同时使用Javafx和线程,我经常遇到这个问题,我制作了一个按钮,然后当单击按钮时(使用事件处理程序),我制作了一个for循环,将按钮更改为1、2、3、4、5,然后在每个按钮中间延迟一秒钟。就像倒计时一样! 但实际情况是,它会延迟5秒钟,并将按钮的文本更改为5。 问题是我想看到它在1到5之间变化,但我看到的只是5秒延迟结束时的5。我假设它会更改按钮文本,但我看不到它。我可能不得不处理<代码>。在

  • 问题内容: 有人可以向我解释一下吗: 如果我注释掉最后三行,输出为: 但是,如果我取消最后三行的注释,则输出为: IE。第一个游标已用第二个游标中执行的DML结果进行了更新。 这是预期的行为吗?有什么方法可以预防吗? 我正在运行Python 3.6.3(根据Ubuntu 17.10),以防万一。 问题答案: 如果可能,SQLite会根据需要计算结果行。但这并非总是可能的,因此无法保证。 您永远不要

  • 基本上,这个程序是一个9x9矩阵,其中每个单元格都需要用某些数字更新。我有一个矩阵表。将其初始化为0。程序正在工作,但在一切完成后仅更新一个表。(找到解决方案)。 由于数据在幕后更改,表单元格不会更新。整个表在程序执行结束时更新。但我想在给每个单元格赋值时看到每个数字实时变化。非常感谢任何代码帮助。 我也在没有容器的情况下尝试了这个。但这也没有更新表。我做的研究告诉我,setImite(true)