首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >《IntelliJ IDEA 插件开发》第三节:开发工具栏和Tab页,展示股票行情和K线

《IntelliJ IDEA 插件开发》第三节:开发工具栏和Tab页,展示股票行情和K线

作者头像
小傅哥
发布于 2021-11-19 07:59:56
发布于 2021-11-19 07:59:56
2.7K00
代码可运行
举报
运行总次数:0
代码可运行

持续坚持原创输出,点击蓝字关注我吧

作者:小傅哥 博客:https://bugstack.cn

❝沉淀、分享、成长,让自己和他人都能有所收获!😜 ❞

一、前言

没招了,不写点刺激的,你总是不好好看!

以前,我不懂。写的技术就是技术内容,写的场景就是场景分析,但从读者的阅读我发现,大家更喜欢的是技术与场景结合,尤其是用技术结合那些羞羞答答的场景,虽然嘴上都不说。

本章节主要是想给大家介绍关于在 IDEA 插件开发中如何使用工具栏和Tab页,来填充在 IDEA 中底部的窗体,就像 IDEA 中的控制台一样。但就这么写好像是够呛能有人看,因为大家只从技术点来看,很难发现这里面有什么应用场景,即使看了好像也不知道这技术能干啥。

那咋办,整点刺激的吧。大家不是喜欢赔钱炒股吗,那就把股票行情K线展示结合到IDEA插件开发中。可以让学习插件的伙伴,都能在写代码疲惫的时候还能看一眼股票,也许在关键的时候还能提醒你赶紧抛出去!

二、需求目的

安全起见,需要在 IDEA 中以一个比较隐秘的角落,开发股票插件,让炒股的同学可以在紧张编码CRUD之余,不要忘记自己关注的股票购买和抛售。

那么为了解决这个问题,我们需要几个技术点,包括:股票数据接口、查询对象封装、IDEA 底部窗体和工具栏开发、定时任务扫描、Swing UI、股票代码配置和保存、窗体按钮事件监听等。

接下来我们就结合这些技术点,来解决实际的场景问题,看看如何在 IDEA 中开发一个股票插件。

三、案例开发

1. 工程结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
guide-idea-plugin-tab
├── .gradle
└── src
    ├── main
    │   └── java
    │    └── cn.bugstack.guide.idea.plugin 
    │        ├── domain
    │        │   ├── model
    │        │   │  ├── aggregates
    │        │   │  │   └── StockResult.java    
    │        │   │  └── vo  
    │        │   │      ├── Data.java 
    │        │   │      ├── GoPicture.java     
    │        │   │      └── Stock.java       
    │        │   └── service   
    │        │       ├── impl     
    │        │       │   └── StockImpl.java    
    │        │       └── IStock      
    │        ├── factory
    │        │   └── TabFactory.java  
    │        ├── infrastructure
    │        │   ├── DataSetting.java       
    │        │   └── DataState.java     
    │        ├── module
    │        │   ├── RefreshBar.java   
    │        │   ├── SettingBar.java    
    │        │   └── ViewBars.java         
    │        └── ui
    │        │   ├── ConsoleUI.java 
    │        │   ├── ConsoleUI.form
    │        │   ├── GidConfig.java  
    │        │   └── GidConfig.form
    │        └── Config    
    ├── resources
    │   └── META-INF
    │       └── plugin.xml 
    ├── build.gradle  
    └── gradle.properties

源码获取:#公众号:bugstack虫洞栈 回复:idea 即可下载全部 IDEA 插件开发源码

在此 IDEA 插件工程中,主要分为5块区域:

  • domain:领域层,提供查询股票接口的数据服务,如果你是做的一些其他工具型功能,也可以把业务类的内容放到 domain 中实现。
  • factory:工厂层,这里主要提供的是一个工具窗体生成的入口对象,来创建出我们自己添加的窗体内容。
  • infrastructure:基础层,提供了数据存放对象,这个数据对象是一个可以落盘的操作,创建好的类配置到 plugin.xml 中即可。这样我们配置好股票代码后,关机重启 IDEA 也可以把配置读取出来
  • module:模块,提供用于 UI 窗体使用的一些工具页操作。比如这里的 ViewBars 会在 TabFactory 中实例化,用于展示出你添加的窗体。
  • ui:这一部分使用的是 IDEA 中自动拖拽生成的窗体,免去了手写的复杂性,一些简单的页面直接拖拽就可以。这也是一种低代码哦!

接下来,我们就分别看下每个核心功能点的实现过程,这个过程中你可以提前把代码下载下来,对照着学习会更加容易理解。

  1. 实现 ToolWindowFactory 开发一个底部的窗体,用于承载所需的内容
  2. 左侧是侧边工具栏,配置自选股、刷新股票指数
  3. 右侧是2个 tab 页,分别用于展示股票数据和K线图,这里的数据则需要通过股票接口来提供

2. tab 页窗体

首先这里我们先使用 IDEA 插件开发中,Swing UI 功能,拖拽出2个简单的窗体。有了这样的一个基本结构大家的脑子里应该就可以有画面了。

2.1 自选股配置窗体
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class GidConfig implements Configurable {

    private JPanel mainPanel;
    private JPanel settingPanel;
    private JLabel gidLabel;
    private JTextField gidTextField;

    private ConsoleUI consoleUI;

    public GidConfig(ConsoleUI consoleUI){
        this.consoleUI = consoleUI;
    }

    public JTextField getGidTextField() {
        return gidTextField;
    }

    @Override
    public void apply() throws ConfigurationException {
        List<String> gidList = DataSetting.getInstance().getGids();
        gidList.clear();
        String[] gids = gidTextField.getText().trim().split(",");
        for (String gid : gids) {
            gidList.add(gid.trim());
        }
        // 刷新数据
        consoleUI.addRows(gidList);
    }

}
  • 在 GidConfig 对应的 java 类中,可以对一些窗体中出现的属性进行获取。当用户点击这个窗体的确认按钮后,我们可以在 apply 中拿到用户配置的股票代码,并对其进行读取和设置股票数据。
2.2 股票展示窗体
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ConsoleUI {

    private JTabbedPane tabbedPane1;
    private JPanel one;
    private JPanel two;
    private JLabel picMin;
    private JTable table;
    private JLabel picDay;

    // 查询数据服务
    private IStock stock = new StockImpl();

    private DefaultTableModel defaultTableModel = new DefaultTableModel(new Object[][]{}, new String[]{"股票", "代码", "最新", "涨跌", "涨幅"});

    public ConsoleUI() {
        // 初始数据
        table.setModel(defaultTableModel);
        addRows(DataSetting.getInstance().getGids());

        // 添加事件
        table.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                int row = table.getSelectedRow();
                Object value = table.getValueAt(row, 1);
                GoPicture goPicture = stock.queryGidGoPicture(value.toString());
                try {
                    // 分钟K线
                    picMin.setSize(545, 300);
                    picMin.setIcon(new ImageIcon(new URL(goPicture.getMinurl())));

                    // 当日K线
                    picDay.setSize(545, 300);
                    picDay.setIcon(new ImageIcon(new URL(goPicture.getDayurl())));
                } catch (MalformedURLException m) {
                    m.printStackTrace();
                }
            }
        });
    }

    public JTabbedPane getPanel() {
        return tabbedPane1;
    }

    public void addRows(List<String> gids) {
        // 查询
        List<Data> dataList = stock.queryPresetStockData(gids);

        // 清空
        int rowCount = defaultTableModel.getRowCount();
        for (int i = 0; i < rowCount; i++) {
            defaultTableModel.removeRow(0);
        }

        // 添加
        for (Data data : dataList) {
            defaultTableModel.addRow(new String[]{data.getName(), data.getGid(), data.getNowPri(), data.getIncrease(), data.getIncrePer()});
            table.setModel(defaultTableModel);
        }
    }

}
  • 展示股票的窗体对应的 ConsoleUI 类,主要负责数据的渲染、更新和对每条数据的事件操作,当用户点击某一条数据以后,就可以到 K线 页中看到对应的股票指数了。

3. 股票框体设置

在开发完 UI 窗体后,我们还需要使用一个 SimpleToolWindowPanel 的继承实现类,承载工具栏和页面的设置。

3.1 设置-工具栏

cn.bugstack.guide.idea.plugin.module.SettingBar

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class SettingBar extends DumbAwareAction {

    private ViewBars panel;

    public SettingBar(ViewBars panel) {
        super("配置股票", "Click to setting", IconLoader.getIcon("/icons/config.svg"));
        this.panel = panel;
    }

    @Override
    public void actionPerformed(@NotNull AnActionEvent e) {
        ShowSettingsUtil.getInstance().editConfigurable(panel.getProject(), new GidConfig(panel.getConsoleUI()));
    }

}
  • 设置工具栏位于自定义插件面板中最左侧的位置,用于设置自选股票代码。
  • 通过在方法 actionPerformed 中使用 ShowSettingsUtil 工具类启动 UI 窗体。
3.2 刷新-工具栏

cn.bugstack.guide.idea.plugin.module.RefreshBar

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class RefreshBar extends DumbAwareAction {

    private ViewBars panel;

    public RefreshBar(ViewBars panel) {
        super("刷新指数", "Click to refresh", IconLoader.getIcon("/icons/refresh.svg"));
        this.panel = panel;
    }

    @Override
    public void actionPerformed(@NotNull AnActionEvent e) {
        panel.getConsoleUI().addRows(DataSetting.getInstance().getGids());
    }

}
  • 在刷新工具栏中主要是用于手动触发刷新股票最新结果,之所以使用手动刷新主要是这个接口有查询次数限制,如果是定时任务一直跑,一会100次的查询限制就用完了。不过我们这里也是为了体现专栏内对技术的使用,增加多个设置按钮,就更容易知道如何添加了
3.3 窗体填充面板

cn.bugstack.guide.idea.plugin.module.ViewBars

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ViewBars extends SimpleToolWindowPanel {

    private Project project;
    private ConsoleUI consoleUI;

    public ViewBars(Project project) {
        super(false, true);
        this.project = project;
        consoleUI = new ConsoleUI();

        // 设置窗体侧边栏按钮
        DefaultActionGroup group = new DefaultActionGroup();
        group.add(new SettingBar(this));
        group.add(new RefreshBar(this));

        ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar("bar", group, false);
        toolbar.setTargetComponent(this);
        setToolbar(toolbar.getComponent());

        // 添加
        JBSplitter splitter = new JBSplitter(false);
        splitter.setSplitterProportionKey("main.splitter.key");
        splitter.setFirstComponent(consoleUI.getPanel());
        splitter.setProportion(0.3f);
        setContent(splitter);
    }

    public Project getProject() {
        return project;
    }

    public ConsoleUI getConsoleUI() {
        return consoleUI;
    }
}
  • 在填充面板中主要是在我们自定义的插件中,在左侧添加工具栏,其余位置添加股票展示面板。
  • DefaultActionGroup 中可以以此添加设置和刷新按钮,并最终填充到 ActionToolbar 里去,这样就设置完成了。
  • JBSplitter 是一个分割线,右侧填充上我们的股票指数展示面板 splitter.setFirstComponent(consoleUI.getPanel())

4. 填充主面板到IDEA工具栏

4.1 窗体工厂

cn.bugstack.guide.idea.plugin.factory.TabFactory

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TabFactory implements ToolWindowFactory {

    @Override
    public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
        // 窗体
        ViewBars viewPanel = new ViewBars(project);
        // 获取内容工厂的实例
        ContentFactory contentFactory = ContentFactory.SERVICE.getInstance();
        // 获取 ToolWindow 显示的内容
        Content content = contentFactory.createContent(viewPanel, "股票", false);
        // 设置 ToolWindow 显示的内容
        toolWindow.getContentManager().addContent(content, 0);

        // 定时任务,自动刷新股票
        /* 因每日查询次数限制,这里就不开定时任务了,用户可以自行申请 https://dashboard.juhe.cn/home
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                viewPanel.getConsoleUI().addRows(DataSetting.getInstance().getGids());
            }
        }, 3000, 2000);*/
    }

}
  • 在 TabFactory 中主要包括两部分,一个是把 ViewBars 填充到整个 toolWindow 中,另外一个是我们目前已经注释掉的刷新股票数据的定时任务。
  • 这里由于股票接口查询次数限制,所以就把定时任务注释掉了,否则一会就把可用次数跑没了。
4.2 配置窗体

plugin.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<idea-plugin>
    
    <extensions defaultExtensionNs="com.intellij">
        <!-- Add your extensions here -->
        <toolWindow id="XUtil"
                    canCloseContents="true"
                    anchor="bottom"
                    factoryClass="cn.bugstack.guide.idea.plugin.factory.TabFactory"
                    icon="/icons/stock.png"
        />

    </extensions>

</idea-plugin>
  • 这里我们把窗体配置到整个 IDEA 界面的最下方 anchor="bottom" 这个位置既方便又最安全

5. 数据持久化配置

  • 当我们使用 IDEA 进行配置一些基本参数后,例如:Maven、Gradle、Git、签名信息等,在日常的关闭和重启 IDEA 时,这些配置信息是会保存下来的,而不会说关闭就没了。
  • 那么我们开发的这款插件需要做的一些自选股票代码配置,也要进行保存,否则不能每次都在 IDEA 启动时重新设置。所以这里我们需要用到 plugin.xmlapplicationService 配置上实现了 PersistentStateComponent 的数据设置存放类。
5.1 对象数据

cn.bugstack.guide.idea.plugin.infrastructure.DataState

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class DataState {

    private List<String> gids = new ArrayList<>();

    public List<String> getGids() {
        return gids;
    }

    public void setGids(List<String> gids) {
        this.gids = gids;
    }

}
  • 这个是数据对象类,你可以在这里设置你需要的属性存放,就像 gids 一样,用于存放用户配置的股票代码集合。
5.2 持久数据

cn.bugstack.guide.idea.plugin.infrastructure.DataSetting

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@State(name = "DataSetting",storages = @Storage("plugin.xml"))
public class DataSetting implements PersistentStateComponent<DataState> {

    private DataState state = new DataState();

    public static DataSetting getInstance() {
        return ServiceManager.getService(DataSetting.class);
    }

    @Nullable
    @Override
    public DataState getState() {
        return state;
    }

    @Override
    public void loadState(@NotNull DataState state) {
        this.state = state;
    }

     public List<String> getGids(){
        return state.getGids();
     }

}
  • DataSetting 类需要使用到 IDEA 插件开发的提供的注解 @State 配置持久对象
  • 此外还需要提供一个 getInstance 方法来获取数据对象实例,那么在我们实际使用的时候就可以拿到我们配置的对象了并进行设置和读取数据。
5.3 plugin.xml 配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<extensions defaultExtensionNs="com.intellij">
    <!-- Add your extensions here -->
    <applicationService serviceImplementation="cn.bugstack.guide.idea.plugin.infrastructure.DataSetting"/>
</extensions>
  • 在创建好数据设置类以后,则需要使用 applicationService 标签把你的类配置到 plugin.xml 中 extensions 里面。

6. 股票接口

6.1 技术调研
  • 无论什么功能开发,在开始之前都需要把这些零碎的事情处理完,才能进行代码开发,这个过程也叫做技术调研到设计和评审。就像现在我们需要进行股票信息的查询,那么就需要找到一个可以提供数据查询的接口,看看这个接口如何申请使用,以及返回的对象都有哪些字段,是否符合我们的预期。
  • 这里小傅哥找到了一个聚合数据的接口,不过只能免费100次/天调用,如果你有更好的可以更换下。
  • 接口:http://web.juhe.cn:8080/finance/stock/hs?gid=sz000651&key=自己申请 - 这里的 key 需要自己申请
  • 数据:
6.2 服务封装

有了股票的查询接口,接下来就可以对数据做一个查询和对象转换了。

cn.bugstack.guide.idea.plugin.domain.service.impl.StockImpl

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class StockImpl implements IStock {

    // 自行申请,股票API,替换key即可【一天可免费调用100次】:https://dashboard.juhe.cn/home/
    private final String key = "4bc57728***********f0595";

    @Override
    public List<Data> queryPresetStockData(List<String> gids) {
        List<Data> dataList = new ArrayList<>();
        for (String gid : gids) {
            StockResult stockResult = JSON.parseObject(HttpUtil.get("http://web.juhe.cn:8080/finance/stock/hs?gid=" + gid + "&key=" + key), StockResult.class);
            Stock[] stocks = stockResult.getResult();
            for (Stock stock : stocks) {
                dataList.add(stock.getData());
            }
        }
        return dataList;
    }

}
  • 这里我们在 domain 领域层中定义数据 vo 对象,以及提供股票查询服务的封装。这样调用方就可以直接使用这份数据了,如果你是其他厂商提供的股票查询接口,也可以进行封装和更换,做一个接口适配层。

四、测试验证

  • 如果你下载工程后没有 Plugin 和一个绿色箭头,那么可以按照图自己配置 :runIde 这样就可以运行了。

运行效果 - 激动人心的时刻到了,再也不用担心写代码影响看股票了哦

1. 配置股票

  • 首先你需要在这里配置你关注的股票代码,我配置了3个我看好的。

2. 自选股指数

  • 配置好以后你就可以看到自己的自选股指数了,选中一条以后,在点击K线。
  • 当你需要看最新数据的时候,可以点左侧的刷新按钮。

3. K线

  • 现在这个就是对应的 K线,是不是还挺香的。目前是加了最近K线和日K线,你还可以扩展其他维度的图。

五、总结

  • 本章节我们使用到了在 IDEA 窗体中添加稍微复杂一些的页面结构,有侧边栏、有Tab页,并在需要在这些页面体中进行交互和通信。此外还是用到了数据的存储设置,这个在很多时候开发IDEA插件里都会用到。
  • 像是这样的技术实践不只是可以用于展示股票数据,你还可以结合自己所需扩展属于你实际场景中需要的内容,比如开发一个数据集中查询插件,可以查询数据库、ES、Redis等,也可以是所有的工具类集合页,这些内容会更有技术价值。
  • 当你自己开始主动的向你学习到的一些源码、框架、组件、项目等中添加自己想要的功能时,就是你真的开始学习了,否则一个内容看过没多久也就忘记了。

六、系列推荐

- END -

下方扫码关注 bugstack虫洞栈,与小傅哥一起学习成长、共同进步,做一个码场最贵Coder!

  • 回复【设计模式】,获取《重学Java设计模式》,这是一本互联网真实案例的实践书籍,从实际业务中抽离出,交易、营销、秒杀、中间件、源码等众多场景进行学习代码设计。
  • 回复【Spring专栏】,获取《手撸Spring》,这是一本通过带着读者手写简化版 Spring 框架,了解 Spring IOC、AOP、循环依赖等核心原理和设计实现的技术资料。
  • 回复【面经手册】,获取《面经手册 • 拿大厂Offer》,这是一本有深度的Java核心内容,从数据结构、算法、并发编程以及JVM系8不断深入讲解,让懂了就是真的懂。

你好,我是小傅哥。一线互联网java 工程师、架构师,开发过交易&营销、写过运营&活动、设计过中间件也倒腾过中继器、IO板卡。不只是写Java语言,也搞过C#、PHP,是一个技术活跃的折腾者。

2020年写了一本PDF《重学Java设计模式》,全网下载量50万+,帮助很多同学成长,现已出书。同年 github 的两个项目,CodeGuideitstack-demo-design,持续霸榜 Trending,成为全球热门项目。

2021年上架一本小册《SpringBoot 中间件设计和开发》,16个互联网中间件场景、30个工程,是全网唯一一次手把手教你造轮子、写中间件,因为这样的技术离P7最近、离架构师最近、离高薪资最近!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bugstack虫洞栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《IntelliJ IDEA 插件开发》第二节:开发摸鱼看书的侧边栏窗体
总有人拿到产品的需求,就着急开干,反正也懒的想开发中会发生啥,上线后多少人使用,管它三七二十一先堆起来代码看一看,反正能跑就行,无论代码还是你!
小傅哥
2021/11/04
4.6K2
《IntelliJ IDEA 插件开发》第四节:扩展创建工程向导步骤,开发DDD脚手架
你做这个东西的价值是什么?有竞品调研吗?能赋能业务吗?那不已经有同类的了,你为什么还自己造轮子?
小傅哥
2021/12/01
1.2K0
《IntelliJ IDEA 插件开发》第四节:扩展创建工程向导步骤,开发DDD脚手架
《IntelliJ IDEA 插件开发》第 五 节:IDEA工程右键菜单,自动生成ORM代码
几年前,大家并不是这样,那时候还有很多东西可以创新,乱世出英雄总能在一个方向深耕并做出一款款好用的产品功能、框架服务、技术组件等。但后来好像这样的情况开始减少了,取而代之的是重复、复刻、照搬,换个新的皮肤、换个新的样式、换个新的名字,就是取巧的新东西了。
小傅哥
2021/12/13
2.5K0
《IntelliJ IDEA 插件开发》第 五 节:IDEA工程右键菜单,自动生成ORM代码
《IntelliJ IDEA 插件开发》第七节:通过Inspection机制,对静态代码安全审查
喇喇蛄,是东北的一种害虫,经常在种水稻的季节,在池埂子上盗洞,导致稻田里的水悄悄的流没了,影响稻苗发育。
小傅哥
2021/12/27
2.4K0
《IntelliJ IDEA 插件开发》第七节:通过Inspection机制,对静态代码安全审查
《IntelliJ IDEA 插件开发》第八节:在插件中引入探针,基于字节码插桩获取执行SQL
一月三舟,托尔斯泰说:“多么伟大的作家,也不过就是在书写自己的片面而已”。何况是我,何况是我们!
小傅哥
2022/03/28
1.2K0
《IntelliJ IDEA 插件开发》第八节:在插件中引入探针,基于字节码插桩获取执行SQL
《IntelliJ IDEA 插件开发》第一节:两种方式创建插件工程
对于码农这一行业的编程学习生涯来说,会遇到很多的不会,不会搭建IDEA工程、不会写老师的案例、不会完成书中的效果、不会做项目的需求、不会实现复杂的逻辑、不会抽象工程的结构等等。但这些不会当中并不是所有的不会,都因为太复杂学不会,而是很大一部分内容因为找不到好的资料、没有清晰的文档、缺少完整的案例,导致不知道所以不会。
小傅哥
2021/10/20
3.1K0
你们要的Intellij IDEA 插件开发秘籍,来了!
王昭霞,软件开发工程师,先后从事脚本工具编写、工具开发、Android基础模块开发等工作。
京东技术
2018/09/28
57.2K13
你们要的Intellij IDEA 插件开发秘籍,来了!
《IntelliJ IDEA 插件开发》第六节:选定对象批量织入“x.set(y.get)”代码,自动生成vo2dto
这些年从事编程开发以来,我好像发现了大部分研发那些不愿意干的事,都成就了别人。就像部署服务麻烦,有了Docker、简单CRUD不想开发,有了低代码、给方法代码加监控繁琐、有了非入侵的全链路监控。
小傅哥
2021/12/15
8700
《IntelliJ IDEA 插件开发》第六节:选定对象批量织入“x.set(y.get)”代码,自动生成vo2dto
IDEA Web渲染插件开发(一)— 使用JCEF
目前网上已经有了很多关于IDEA(IntelliJ平台)的插件开发教程了,本人觉得简书上这位作者秋水畏寒 的关于插件开发的文章很不错,在我进行插件开发的过程中指导了我很多。但是综合下来看,在IDEA上加载网页的插件的教程还不是特别多,官方文档也不是那么的完整。本系列将会从这个角度出发,探讨如何编写加载Web页面的插件。
w4ngzhen
2023/10/16
2.4K0
IDEA Web渲染插件开发(一)— 使用JCEF
IDEA 插件开发实战
IntelliJ IDEA 是一款开发工具,提供很多插件功能,比如阿里规范插件(Alibaba Java Coding Guidelines),但是随着日常业务展开,很多工作重复性编码,浪费很多时间,需要自定义抽象出来一些插件,自动化的方式解决问题,这也是工程师文化的体现。
CSDN技术头条
2020/02/19
2.6K0
技术调研,IDEA 插件怎么开发「脚手架、低代码可视化编排、接口生成测试」?
你觉得肯德基全家桶是什么?一家人一起吃的桶吗,就那么一点点?不是,肯德基全家桶说的是,鸡的全家桶!
小傅哥
2021/09/14
1.6K0
Idea插件开发
https://www.w3cschool.cn/intellij_idea_doc/
码客说
2024/08/04
4490
Idea插件开发
开发属于自己的第一款IDEA插件!
写Java代码的时候,经常会涉及到重复性的操作,这个时候就会想要是有这样一个插件就好了,如果是大家都会遇到的场景,IDE或许已经提供了,再不然也有可能有人编写了相关的插件。
良月柒
2020/02/24
8330
idea插件开发记录
插件开发示例 ---- 功能开发代码示例 java package com.cjl.plugins.code.hints; import com.cjl.plugins.code.code.NavigatorPanel; import com.cjl.plugins.code.http.HttpUtils; import com.cjl.plugins.code.json.Json; import com.intellij.codeInsight.hint.HintManager; import com.
司夜
2023/03/31
7660
idea插件开发记录
【开发工具 idea】值得推荐的15款idea插件
对于一个猿来说,工欲善其事,必先利其器,一个好的开发工具就是程序员的左膀右臂,idea作为大部分java猿的开发工具,无疑是最好用的ide了。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。
lomtom
2021/10/27
3.1K0
【开发工具 idea】值得推荐的15款idea插件
idea插件开发指南_idea get set插件
gitee地址:https://gitee.com/jyq_18792721831/studyplugin.git idea插件开发入门 idea插件开发–配置 idea插件开发–服务-翻译插件 idea插件开发–组件–编程久坐提醒
全栈程序员站长
2022/11/10
6K0
idea插件开发指南_idea get set插件
IDEA插件开发.02之“异味”代码收集插件
许久没更新IDEA插件开发系列了。最近刚好在汇总日常开发中常见的代码“异味”,共享文档复制黏贴略显麻烦,所以想着是否可以搞一个IDEA插件来帮忙收集常见代码,毕竟IDEA作为后端程序员必备的开发工具,显然会方便很多。
有一只柴犬
2024/01/25
2040
IDEA插件开发.02之“异味”代码收集插件
第三节,SpringBoot集成shrio,Redis缓存session与权限
https://gitee.com/DencyCheng/springboot-shrio/tree/dev/
DencyCheng
2018/12/12
2.7K0
IntelliJ插件开发-京东工程师教你改造你的IDE
王帅廷,京东 Android高级开发工程师,6年以上开发经验,对设计框架有着深刻的认识,负责京东商城研发工具的开发,设计并完成了多个IntelliJ插件的开发工作。
京东技术
2018/07/30
3.3K1
IntelliJ插件开发-京东工程师教你改造你的IDE
IDEA Web渲染插件开发(二)— 自定义JsDialog
《IDEA Web渲染插件开发(一)》中,我们了解到了如何编写一款用于显示网页的插件,所需要的核心知识点就是IDEA插件开发和JCEF,在本文中,我们将继续插件的开发,为该插件的JS Dialog显示进行自定义处理。
w4ngzhen
2023/10/16
1.1K0
IDEA Web渲染插件开发(二)— 自定义JsDialog
推荐阅读
相关推荐
《IntelliJ IDEA 插件开发》第二节:开发摸鱼看书的侧边栏窗体
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档