【发布时间】:2018-10-24 11:40:16
【问题描述】:
如何在 JAVA FX Just like this987654321@ 中添加 5000 个按钮或标签到流面板而不冻结 GUI
为什么我需要这么多按钮 好吧,我不需要那么多,但至少需要 500 - 1000 个。因为我正在构建一个应用程序 Fonticon Tool
慢是可以的,但不是冻结 如果应用程序很慢并且需要几秒钟来显示所有按钮也没关系,但我不希望它冻结进度条和 GUI
工作原理 我有一个带有几个表的 SQLite database, 每个表都有一个values 的列表。一个对象给了我 ArrayList 值
我在寻找什么 我正在寻找类似的东西。
FlowPane fp = new FlowPane();
for(String fonticon_code : DatabaseTable.getlist()) //getlist() returns an array list of Strings
{
fp.getChildren.add(new button().setGraphic(new FontIcon(fonticon_code)));
}
我也希望能够停止和重新启动线程
我累了什么 我试过线程,任务,平台。runLater(更新); 但我不确定我是否正确使用它们
【问题讨论】:
-
嗨,Ash,如果您发布了整个程序,这将有助于回答。欢迎来到 SO!
-
请提供一个minimal reproducible example 来说明问题。
-
为什么需要 5000 个按钮?您的屏幕截图中甚至没有显示 100 个。您最好使用一些虚拟化控件,例如
GridView。 5000 个节点的创建和布局不可避免地需要很长时间,GridView会将创建的单元格数量减少到可见的单元格。 -
@fabian 我正在构建一个应用程序,它需要 FlowPane 上的几百个按钮。为什么要问 FlowPane?调整窗口大小时,FlowPane 中的所有内容都会重新排列
-
按照@fabian 的建议使用
GridView。
标签: java javafx concurrency