打开ToolWindow并写入内容

1.前面两篇讲解了创建一个按钮,今天来将一下创建一个toolWindow并添加里面的内容

编写插件离不开plugin.xml,在插件中配置自己的toolWindow,此时自己配置的toolWindow已经打开。

<extensions defaultExtensionNs=”com.intellij”>
<!– Add your extensions here –>
<!– 自定义控制台输入 –>
<!–canCloseContents 允许用户关闭–>
<toolWindow canCloseContents=”true” anchor=”bottom”
id=”JDCompute Code Lines”
factoryClass=”MyBottomWin”>
</toolWindow>

</extensions>

运行toolWindow,并按下图打开,你会看到右下角有自定义的toolWindow;

打开ToolWindow并写入内容插图打开ToolWindow并写入内容插图1

2.接下来讲一下点击打开自定义的toolWindow

{
if (e.getProject() != null) {
// 将项目对象,ToolWindow的id传入,获取控件对象
ToolWindow toolWindow = ToolWindowManager.getInstance(e.getProject()).getToolWindow(“JDCompute Code Lines”);
if (toolWindow != null) {
// 无论当前状态为关闭/打开,进行强制打开ToolWindow
toolWindow.show(new Runnable() {
@Override
public void run() {

}
});
}
}

}

从代码中可以看出,涉及到了单例模式以及线程,再传project的时候,小编也是猜的,不知道传什么值,看到网上的一些例子只是传入了文本数据。
这样就可以实现点击的时候打开自定义的toolWindow

3.在toolWindow上写入一棵下拉的树,并可以增加子菜单。
在配置文件中可以看到MyBottomWin这个工厂类,他实现了ToolWindowFactory接口,

@Override
public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
// myToolWindow=toolWindow;
ContentFactory contentFactory = ContentFactory.SERVICE.getInstance();
Content content = contentFactory.createContent(mainPanel,””, false);
toolWindow.getContentManager().addContent(content);
}

接口实现以后就可以在重写的方法里面定义自己的面板等。

然后初始化这个类

public MyBottomWin() {
//定义字体
Font fnt = new Font(“Microsoft YaHei UI”, Font.PLAIN, 15);
//找到字体的资源管理
FontUIResource fontRes = new FontUIResource(fnt);
for (Enumeration keys = UIManager.getDefaults().keys(); keys.hasMoreElements(); ) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof FontUIResource)
UIManager.put(key, fontRes);
}
//定义tree 的根目录
DefaultMutableTreeNode root = new DefaultMutableTreeNode(“京东集团”);
//定义根节点下面的子节点
DefaultMutableTreeNode n1 = new DefaultMutableTreeNode(“京东研发”);
DefaultMutableTreeNode n2 = new DefaultMutableTreeNode(“京东行政”);
DefaultMutableTreeNode n3 = new DefaultMutableTreeNode(“京东物流”);
DefaultMutableTreeNode n4 = new DefaultMutableTreeNode(“京东金融”);
DefaultMutableTreeNode n5 = new DefaultMutableTreeNode(“京东商城”);
DefaultMutableTreeNode n6 = new DefaultMutableTreeNode(“京东财务”);
root.add(n1);
root.add(n2);
root.add(n3);
root.add(n4);
root.add(n5);
root.add(n6);
//构造一个treeModel 对象,进行刷新树操作
dt = new DefaultTreeModel(root);
tree1 = new JTree(dt);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); //得到屏幕的尺寸
//设置主面板的大小
mainPanel.setPreferredSize(new Dimension((int)screenSize.getWidth()-50, (int) screenSize.getHeight()/3*2));
//tree 设置大小
tree1.setPreferredSize(new Dimension((int)screenSize.getWidth()-50, (int) screenSize.getHeight()/3*2));
///构造一个 有滚动条的面板
scrollPane = new JScrollPane();
//设置滚动条面板位置
scrollPane.setPreferredSize(new Dimension((int)screenSize.getWidth()-50, (int) screenSize.getHeight()/3*2-50));
//将tree添加道滚动条面板上
scrollPane.setViewportView(tree1);
//将滚动条面板设置哼可见
scrollPane.setVisible(true);
//设置滚动条的滚动速度
scrollPane.getVerticalScrollBar().setUnitIncrement(15);
//解决闪烁问题
scrollPane.getVerticalScrollBar().setDoubleBuffered(true);
mainPanel=new JPanel();
mainPanel.add(scrollPane);
tree1.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.getButton() == e.BUTTON3) { //BUTTON3是鼠标右键
//获取点击的tree节点
DefaultMutableTreeNode note = (DefaultMutableTreeNode) tree1.getLastSelectedPathComponent();
if(note!=null) {
addTreeChilden(note);
}
}
}
});
}
运行的效果;

打开ToolWindow并写入内容插图2

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » 打开ToolWindow并写入内容

提供最优质的资源集合

立即查看 了解详情