首页 > 其他分享 >Burp Suite插件开发 更新UI组件

Burp Suite插件开发 更新UI组件

时间:2023-11-06 11:16:03浏览次数:62  
标签:线程 插件 UI dashboard Dashboard 组件 new Burp

Issue note

操作Swing GUI 组件时,遇到一个问题,比如在前端设置了一个表格,表格里面的数据是后台动态生成的,发现却更新不了。

我尝试猜测问题的原因:

  • 我把表格嵌套在一个面板B,面板B又嵌套在面板A,所以需要刷新面板A才行,也不全对;
  • 线程问题,需要在一个特定的UI子线程才能更新,也不全对;
  • 后来发现是操作的对象引用不对导致,下面是解决方案;

Solve It

核心原则就是:

  • 需要操作正确的引用对象

步骤:

  • 在创建组件放入主面板的时候,把这个创建组件的类变量也存入一个全局变量;
  • 后台在使用的时候,就去全局变量里面取;
  • 最好开启UI子线程比较安全;

Code 示例

//前端

//B类
public Dashboard() {
  //...
}

//后台
定义全局变量存储组件对象的引用

public static Dashboard dashboard;

比如说表格在B类里,而B类嵌套在A类里,必须要在在A类里 创建B类的时候,把这个创建的B类存储进全局变量里,必须是这个指向才有用

// A类
Dashboard dashboard = new Dashboard();
GlobalConfig.dashboard = dashboard;

后台开启一个UI线程也是一个安全的操作

//...

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        System.out.println("dash 111");
        // 更新 Dashboard UI - table
        // 创建匿名类实现回调接口
        IDashboard callback = new IDashboard() {
            @Override
            public void updateTable(List<DashboardTable> dt) {
                System.out.println("execute Dashboard callback!");
                dt.add(new DashboardTable(33, "333"));
                dt.add(new DashboardTable(44, "444"));
            }
        };

        // 执行包含回调函数的操作
        Dashboard dashboard = GlobalConfig.dashboard;   //必须是从全局存储这里拿出来的类对象
        dashboard.perpormCallback2(callback);
        GlobalConfig.mainUI.reprint();

        System.out.println("dash 222");
    }
});

标签:线程,插件,UI,dashboard,Dashboard,组件,new,Burp
From: https://www.cnblogs.com/mysticbinary/p/17808212.html

相关文章

  • tinymce的imgtools插件的使用
    使用TinyMCE的imgtools插件可以实现在编辑器中旋转和翻转图片,以及编辑图片等操作。具体使用方法如下:安装TinyMCE和imgtools插件。可以通过npm安装TinyMCE和imgtools插件,然后在编辑器中引入相关依赖。配置工具条按钮。通过添加工具条按钮,可以实现在编辑器中旋转和翻转图片,以及编辑图......
  • tinymce的imgtools插件的使用
    使用TinyMCE的imgtools插件可以实现在编辑器中旋转和翻转图片,以及编辑图片等操作。具体使用方法如下:安装TinyMCE和imgtools插件。可以通过npm安装TinyMCE和imgtools插件,然后在编辑器中引入相关依赖。配置工具条按钮。通过添加工具条按钮,可以实现在编辑器中旋转和翻转图片,以及编辑图......
  • Centos7 报No suitable device found for this connection错误,无法启动网卡
    #先备份网卡配置文件[root@xiaojing~]#cd/etc/sysconfig/network-scripts/[root@xiaojingnetwork-scripts]#cpifcfg-ens33ifcfg-ens33.bak#生成新的UUID,并追加到网卡配置文件中。[root@xiaojing~]#uuidgenens3346ff4fc9-9fa1-4010-856f-48d06388e2c5[root@xiaoj......
  • Arduino® UNO R4 Minima 手册
    概述经过增强和改进,ArduinoUNOR4Minima配备了由瑞萨电子提供的强大32位微控制器。为提高处理能力、扩展内存和全新级别的板载外围设备做好准备。与现有Shields等附件的兼容性保持不变,无需对标准外形尺寸或5V工作电压进行任何更改。ArduinoUNOR4(以下简称UNOR4Mi......
  • element-ui 表单验证注意事项
    1、表单验证注意其中的每个el-form-item标签中,都有一个prop,其中的值是我们rules对象中的某个属性。然后我们v-model绑定的值也必须是这个属性比如我们的字段是userName,我们的prop还是name时,校验失效<el-form-itemlabel="名称"prop="name"><el-inputv-model="form.......
  • es - 安装Head/Kibana插件
    1.7安装Head插件Head是elasticsearch的集群管理工具,可以用于数据的浏览和查询(1)elasticsearch-head是一款开源软件,被托管在github上面,所以如果我们要使用它,必须先安装git,通过git获取elasticsearch-head(2)运行elasticsearch-head会用到grunt,而grunt需要npm包管理器,所以nodejs是必......
  • 立即模式下的 Egui
    title:author:阿东keywords:-Rust-RustProgrammingLanguage-egui-eframe-Techniquedescription:Rust优秀GUI库egui采用的立即模式到底有什么特点?为什么选择了它?author_email:[email protected]_at:"2023-03-31"updated_at:"2023-03-......
  • nodejs 新版本build问题
    nodejs、vue问题记录【vue下载地址】https://unpkg.com/vue/dist/vue.jshttps://unpkg.com/vue@nexthttps://unpkg.com/vue@3/dist/vue.global.js【npm创建vue项目】npmcreatevue@latest 1、node新版本问题参考下:https://www.jianshu.com/p/edbad6875b7eNode.j......
  • Pset_BuildingCommon
    Pset_BuildingCommonPSET_TYPEDRIVENOVERRIDE/IfcBuilding :属性集定义BuildingCommon:IfcBuilding所有实例定义的公共特性。请注意,几个建筑属性在IfcBuilding实例中直接处理,建筑编号(或短名称)由IfcBuilding.name处理,建筑名称(或长名称)由IfcBuilding.LongName处理,描述(或注释)由IF......
  • EasyUI Messager 消息框点击右上角x无法执行回掉函数解决
    版本:1.30和1.3.2的可参考以下网址;当前版本1.7.0参考上面的思路在js文件里面查找messager-iconmessager字符串。如下图所示只找到了3处。此时还没有看到用的是那个一个。有回头看一下官网。如下图所示。实用$.messager.alert共有四个参数。根据此处的想法选择如下图所示......