小编Dar*_*tal的帖子

JavaFX优化TreeView上TreeItem的异步延迟加载

我有一个应用程序,其中有一个TreeView,其中的TreeItems包含大量叶TreeItems。为了避免这种情况,我将要做的是,一次只允许扩展一个非叶TreeItem,然后折叠一次TreeItem,我将清除它的子项,并在需要异步加载它们(当用户展开TreeItem时)。

奇怪的问题是,在下面的测试中,当我第一次单击树项上的展开箭头时,子项加载正常,如果我将其折叠(将清除子项)并再次展开,有时它会起作用,而其他人program hogs and starts consuming 30% of the cpu for a couple of minutes则可以跑回去。奇怪的是,如果我双击TreeItem将其展开(不使用箭头),则即使是在首次启动程序时,猪也立即开始。

我在这里可能做错了什么?

PS:

  • 一些在LazyTreeItem类代码的灵感来自James_D的答案在这里

  • 我尝试在fx线程上运行loadItems任务(不使用ItemLoader),但没有任何区别。

  • 同时使用JAVA 8JAVA 9会发生相同的问题

App.java

public class App extends Application {

    private TreeView<Item> treeView = new TreeView<>();

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("TreeView Lazy Load");
        primaryStage.setScene(new Scene(new StackPane(treeView), 300, 275));
        initTreeView();
        primaryStage.show();
    }

    private void initTreeView() { …
Run Code Online (Sandbox Code Playgroud)

java javafx javafx-8

6
推荐指数
1
解决办法
565
查看次数

Chrome扩展程序:在页面上运行任何嵌入式脚本之前,先运行内容脚本

我正在尝试通过更改嵌入在视频的html观看页面中的player_api脚本内部的一些变量来更改YouTube播放器的某些行为。

我正在尝试修改的嵌入式脚本

问题是,无论我如何尝试,播放器的嵌入式脚本始终会在我的扩展程序对其进行修改之前运行。因此,保持玩家的行为相同。

我尝试将清单中的run_at属性设置为document-start,但是脚本根本没有运行

在更改脚本之前,我该怎么做才能停止执行该脚本?

PS:我尝试通过截获html调用并使用Charles Proxy编辑正文来更改脚本,然后按我的意愿更改了播放器的行为。因此,它知道,如果在正确的时间完成,它应该可以工作。

manifest.json

{
    "manifest_version": 2,
    "name": "YouFit For YouTube",
    "version": "1",
    "content_scripts": [{
        "js": ["content.js"],
        "matches": ["https://*.youtube.com/watch?*",
        "https://*.youtube.com/watch?*"],
    }],
    "browser_action": {
        "default_icon": "icon.png"
    }
}
Run Code Online (Sandbox Code Playgroud)

content.js

function changeBehavior() {
    var scriptElements = document.getElementsByTagName('script');
    for (var i = 14; i < scriptElements.length; i++) {
        var curScriptBody = scriptElements[i].outerHTML;
        // Find the script i'm interested in
        if (curScriptBody.indexOf("var ytplayer") != -1) {
            scriptElements[i].outerHTML = scriptElements[i].outerHTML.replace("<text>", "<replacement …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome browser-extension google-chrome-extension content-script

5
推荐指数
1
解决办法
984
查看次数

JavaFX:如何实现自定义工具提示

我正在尝试创建自己的 Tooltip 类。基本上,工具提示将是一个 标签,底部有一个指针图形(FontAwesomeView),全部包裹在vbox 中

我遇到的部分是,如何在屏幕上显示我的自定义工具提示而不将其添加到父节点?

java javafx javafx-2 javafx-8

0
推荐指数
1
解决办法
2807
查看次数