【问题标题】:Where do I need to put the UI initialization code in an IntelliJ Idea plugin?我需要将 UI 初始化代码放在 IntelliJ Idea 插件中的什么位置?
【发布时间】:2018-05-19 14:37:05
【问题描述】:

我想为 IntelliJ Idea 创建一个插件,在状态栏中放一个小按钮。

AFAIK 代码必须如下所示:

final StatusBar statusBar = WindowManager.getInstance().getStatusBar(project);
final StatusBarWidget widget = new WordCounterWidget();
statusBar.addWidget(widget);

WordCounterWidget 是我想放入状态栏的按钮。

我试着写了

这些都没有带来预期的结果——按钮没有显示。

上述用于插入按钮(或其他任何可以显示文本且可点击的代码)的代码是否正确?如果是,我应该把它放在哪里,以便在打开、重新打开或创建项目时执行它(状态栏小部件应该在 Idea 中打开项目时始终可见)?

代码是here

更新一:尝试将WordCounterServiceImpl的代码改为

public class WordCounterServiceImpl implements WordCounterService {
    private final Project project;
    public WordCounterServiceImpl(final Project project) {
        this.project = project;
    }

    @Override
    public void projectOpened() {
        final StatusBar statusBar = WindowManager.getInstance().getStatusBar(project);
        final StatusBarWidget widget = new WordCounterWidget();
        statusBar.addWidget(widget);
    }
}

按钮仍未显示。

【问题讨论】:

    标签: java intellij-idea intellij-plugin


    【解决方案1】:

    com.intellij.openapi.components.ProjectComponent#projectOpened

    见:https://www.jetbrains.org/intellij/sdk/docs/basics/plugin_structure/plugin_components.html

    【讨论】:

    • 谢谢。我试过了,但没有结果(见更新 1)。
    • 那你做错了。 ProjectComponent 不是服务 - 它有特殊的 xml 声明。
    猜你喜欢
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 2018-06-11
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多