如何编写NetBeans插件

是否想在NetBeans IDE中添加功能或自动执行某些操作? 跟随我们编写您的第一个NetBeans插件。

让我们超越简单的工具栏示例 ,创建一个可以自动更新的插件。 该代码基于NetBeans的WakaTime插件 。 我们的示例插件将仅打印Hello World语句,并在可用的情况下更新至新版本……足以使您入门。

创建一个新的插件项目

选择File -> New Project然后选择NetBeans Modules -> Module作为项目类型。

创建插件项目

为您的项目命名

为您的项目命名

选择插件的名称空间或代码名称

您的项目名称空间

添加一个Java文件

创建Java文件

名称Java文件

插件起点

创建新的Java类文件后,使其扩展ModuleInstall并使用@OnShowing对其进行包装 ,使其仅在GUI加载后运行。

@OnShowing
public class MyPlugin extends ModuleInstall implements Runnable {
}

在您的OnShowingALT + ENTER ,然后Search Module Dependency for OnShowing选择Search Module Dependency for OnShowing将Window System API导入到项目中。 这将为您的项目添加新的依赖关系,并将必要的import语句添加到文件顶部。 还要对ModuleInstall执行此ModuleInstall

搜索模块依赖性

有时NetBeans org.openide.util依赖项,因此您可能必须手动添加该依赖项。 为此,右键单击MyPlugin,然后选择Properties

项目属性

选择类别Libraries然后单击Add... 键入org.openide.util然后单击OK 。 这会将依赖项添加到您的project.xml文件中。

项目属性库

add-utilities-api

MyPlugin类上按ALT + ENTER ,然后选择Implement all abstract methods

实施抽象方法

最后一件事,将此行添加到manifest.mf文件。 OpenIDE-Module-Install: org/myorg/myplugin/MyPlugin.class

openide模块安装

现在,将在插件加载后执行run()方法。

插件已加载

记录中

让我们将println输出输出到NetBeans IDE日志中。 首先,将记录器设置为MyPlugin类的属性。

public static final Logger log = Logger.getLogger("MyPlugin");

ALT + ENTER导入java.util.logging.Logger 。

添加记录器导入

log.info("MyPlugin has loaded.");替换println log.info("MyPlugin has loaded.");

日志行

自动更新您的插件

MyPlugin包中创建一个新的Java文件UpdateHandler.java

用UpdateHandler.java替换此文件的内容。 搜索模块依赖项,并通过在每个import语句上按ALT + ENTER添加任何缺少的依赖项。

将这些行添加到manifest.mf文件中。

OpenIDE-Module-Layer: org/myorg/myplugin/layer.xml
OpenIDE-Module-Implementation-Version: 201501010101

MyPlugin包中创建一个新的XML文档。

new-xml-document

名称xml文档

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
<filesystem><folder name="Services"><folder name="AutoupdateType"><file name="org_myorg_myplugin_update_center.instance"><attr name="displayName" bundlevalue="org.myorg.myplugin.Bundle#Services/AutoupdateType/org_myorg_myplugin_update_center.instance"/><attr name="enabled" boolvalue="true"/><attr name="instanceCreate" methodvalue="org.netbeans.modules.autoupdate.updateprovider.AutoupdateCatalogFactory.createUpdateProvider"/><attr name="instanceOf" stringvalue="org.netbeans.spi.autoupdate.UpdateProvider"/><attr name="url" bundlevalue="org.myorg.myplugin.Bundle#org_myorg_myplugin_update_center"/></file></folder></folder>
</filesystem>

将此代码添加到run()方法内的MyPlugin类中。

WindowManager.getDefault().invokeWhenUIReady(new Runnable () {@Overridepublic void run() {UpdateHandler.checkAndHandleUpdates();}
});

将这些行添加到Bundle.properties文件中:

Services/AutoupdateType/org_myorg_myplugin_update_center.instance=MyPlugin
UpdateHandler.NewModules=false
org_myorg_myplugin_update_center=https\://example.com/updates.xml

现在,每次NetBeans重新启动并启动插件时,它将通过从example.com下载updates.xml来检查更新。

您的updates.xml文件告诉NetBeans从何处获取插件的新NBM。 要创建用于发布插件的NBM,请右键单击MyPlugin项目,然后选择Create NBM 。 NBM文件是您将发布到NetBeans插件门户的文件 。

有关在GitHub上托管updates.xml的示例,请查看WakaTime NetBeans插件中的 update.xml和对应的Bundle.properties 。

翻译自: https://www.javacodegeeks.com/2015/02/write-netbeans-plugin.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单机最大tcp连接数

单机最大tcp连接数 网络编程 在tcp应用中&#xff0c;server事先在某个固定端口监听&#xff0c;client主动发起连接&#xff0c;经过三路握手后建立tcp连接。那么对单机&#xff0c;其最大并发tcp连接数是多少&#xff1f; 如何标识一个TCP连接 在确定最大连接数之前&#xf…

用了fastapi还需要nginx_nginx 与 fastdfs 的配置过程,已经越过了许多坑,我跪着进入了欢迎页面。。。...

nginx 与 fastdfs 的配置过程&#xff0c;已经越过了许多坑&#xff0c;我跪着进入了欢迎页面。。。上面的是 fastdfs 与 nginx 的官网&#xff0c;我从这里面跌跌撞撞的走出来了&#xff0c;下面是我总结出来的一条平坦的路&#xff0c;小伙伴们可以参考参考。我下面的攻略其实…

Spring Batch教程–最终指南

这是Spring批处理教程&#xff0c;它是Spring框架的一部分。 Spring Batch提供了可重用的功能&#xff0c;这些功能对于处理大量记录至关重要&#xff0c;包括日志记录/跟踪&#xff0c;事务管理&#xff0c;作业处理统计信息&#xff0c;作业重新启动&#xff0c;跳过和资源管…

Neurocomputing 投稿注意事项

1. *.tex 和 *.bib 都以Manuscript项&#xff08;Item&#xff09;提交 &#xff08;abstract.tex除外&#xff09;2. abstract.tex以Abstract项&#xff08;Item&#xff09;提交3. *.eps以Figure项&#xff08;Item&#xff09;提交4. biographies.pdf以Biography of the aut…

箱式图 添加异常值平均值_什么是脏数据?怎样用箱形图分析异常值?终于有人讲明白了...

导读&#xff1a;数据质量分析是数据挖掘中数据准备过程的重要一环&#xff0c;是数据预处理的前提&#xff0c;也是数据挖掘分析结论有效性和准确性的基础。没有可信的数据&#xff0c;数据挖掘构建的模型将是空中楼阁。数据质量分析的主要任务是检查原始数据中是否存在脏数据…

[编程相关]正则表达式Regex语法

--目录-- 0. 前言1. 正则语法2. 正则搜索语法&#xff08;1&#xff09;字符集 Character_Classes&#xff08;2&#xff09;锚定符 Anchors&#xff08;3&#xff09;计数 Quantifiers&#xff08;4&#xff09;分组与索引 Group_And_Reference&#xff08;5&#xff09;周围 …

窗口程序ImageView(仿QQ图片查看器)

近期一直在学习窗口程序之类的问题,下午正好有机会和大家讨论一下. 程序运行截图&#xff1a; 应用方法&#xff1a; 1、直接把图像文件拖到图标上表现 2、通过命令行方式&#xff0c;示例&#xff1a;ImageView.exe "带全路径的图像文件名称" 3、打开ImageView.exe&…

华为硬件工程师社招机考题库_干货:2016年华为中兴硬件工程师笔试题目与经验...

1。一位工科男在拿到华为实习生offer后的面经干货某211学校&#xff0c;机械学院研究生。不得不说一下&#xff0c;华为的员工们真的是认真做事&#xff0c;因为怕我们担心下班轮不到面试。工作人员特意去休息区告诉我们&#xff0c;不面试完他们不会下班&#xff0c;果然是个爱…

USACO3.15stamps(dp)

对dp很无奈。。枚举所有可能达到的值 dp[i]表示到达i值所用最少的邮票 1 /*2 ID: shangca23 LANG: C4 TASK: stamps5 */6 #include <iostream>7 #include<cstdio>8 #include<cstring>9 #include<stdlib.h> 10 #include<algorithm> …

thinkcmf搭建教程_5分钟快速入门

# 5分钟快速入门[TOC1,5]## 1.创建模板目录在public/themes/目录下创建quick_start目录## 2.添加模板描述文件在public/themes/quick_start目录下创建manifest.json文件&#xff0c;内容如下&#xff1a;{"name": "quick_start","version": &quo…

WAV格式

查看下面文章时,请用记事本打开一个wav格式的文件. WAV格式是微软公司开发的一种声音文件格式&#xff0c;也叫波形声音文件&#xff0c;是最早的数字音频格式&#xff0c;被Windows平台及其应用程序广泛支持。WAV格式支持许多压缩算法&#xff0c;支持多种音频位数、采样频率和…

基于价值的类

在Java 8中&#xff0c;某些类在Javadoc中有一个小注释&#xff0c;说明它们是基于值的类 。 其中包括简短说明的链接&#xff0c;以及有关不使用它们的限制。 这很容易被忽略&#xff0c;如果这样做&#xff0c;则可能会在将来的Java版本中以微妙的方式破坏代码。 为了避免这种…

angular五大服务顺序,angularJS $事件处理程序的触发顺序

I was wondering two things, in the context of angularJS event handling.How is defined the order in which handlers listening to the same event are triggered?Is it a sign of a bad design if you start wondering about this?After reading documentation on angu…

地形 凹陷

地形凹下去&#xff1a;先要设置terrain-flattenheightmap 这个 转载于:https://www.cnblogs.com/wolfsky6/archive/2013/05/29/3106078.html

REST API的演变

每个开发人员都以某种方式接触到API 。 要么为一家大公司集成一个主要系统&#xff0c;或者使用最新的图形库生成一些精美的图表&#xff0c;要么直接与他喜欢的编程语言进行交互。 事实是&#xff0c;API无处不在&#xff01; 它们实际上代表了当今Internet的基本构建块&#…

python爬携程酒店评论_python爬虫爬取携程网的酒店评论数据时,有个请求参数不知道是怎么生成的?...

是下面这个代码生成的&#xff0c;看不懂&#xff1a;,_getElevenValue:function(e){function o(e){for(var o["A","B","C","D","E","F","G","H","I","J","K"…

Oracle MAF中的LOV

我们都喜欢最强大的ADF功能值列表之一。 使用它们&#xff0c;我们可以在ADF应用程序中声明性地轻松构建非常复杂的功能。 一件好事是&#xff0c;我们在Oracle MAF中也有类似的方法。 在ADF BC中&#xff0c;我们在业务服务级别&#xff08;基本上在实体或VO级别&#xff09;定…

怎么移动矩形选框工具选中的东西_ps矩形选框工具怎么用,你值得一看的技巧...

PS是一款非常好用的图片制作软件&#xff0c;我们可以使用矩形选框工具&#xff0c;选择自己需要的区域进行操作&#xff0c;下面小编就教大家ps矩形选框工具怎么用&#xff0c;希望可以帮助到大家。操作方法01首先我们打开PS进入到主界面&#xff0c;如图所示。02之后我们需要…

functionclass[LeetCode]Path Sum II

在本篇文章中,我们主要介绍functionclass的内容,自我感觉有个不错的建议和大家分享下 每日一道理 只有启程&#xff0c;才会到达理想和目的地&#xff0c;只有拼搏&#xff0c;才会获得辉煌的成功&#xff0c;只有播种&#xff0c;才会有收获。只有追求&#xff0c;才会品味堂堂…

Java8中的Mapreduce

Wordcount旨在Mapreduce其余编程世界中的“ Hello world”。 最近&#xff0c;我一直在探索一些更著名的Java 8功能&#xff0c;例如Lambda&#xff0c;Streams和Optionals&#xff0c;所以我认为在Java中简化Wordcount版本会很不错。 Java的Stream和Lambda函数使实现数据处理…