Java Intelij Идея, как добавить значок желоба? - PullRequest
2 голосов
/ 13 марта 2020

У меня проблема с рендерингом значков желоба в моем проекте плагина IntelliJ idea. problem

Я хочу отобразить значок желоба рядом с номером строки, но он отображает только маленький прямоугольник. Путь к значку желоба загружен правильно, а размер значков желоба составляет 12x12 пикселей, формат png. Вы можете мне помочь?

Мой код:

public static void addLineHighlight(Document document, int lineNumber,
                                        String text) {


        Icon highlightIcon = IconLoader.getIcon("META-INF/fail.png");

        addGutterIcon(getRangeHighlighter(document, lineNumber), highlightIcon, text);
    }


    @NotNull
    private static RangeHighlighter getRangeHighlighter(Document document, int lineNumber) {
        MarkupModel markupModel = getMarkupModel(document);
        TextAttributes textAttributes = getTextAttributes();

        RangeHighlighter highlighter;
        highlighter = markupModel.addLineHighlighter(lineNumber, 66 , textAttributes);
        return highlighter;
    }

    private static void addGutterIcon(@NotNull RangeHighlighter highlighter, Icon icon, String text) {

        highlighter.setGutterIconRenderer(new GutterIconRenderer() {
            @Override
            public boolean equals(Object obj) {
                return false;
            }

            @Override
            public int hashCode() {
                return 0;
            }

            @NotNull
            @Override
            public Icon getIcon() {
                return icon;
            }
        });

    }

    private static MarkupModel getMarkupModel(Document document) {
        return DocumentMarkupModel.forDocument(document, TestSingleton.getInstance().getProject(), true);
    }

    @NotNull
    private static TextAttributes getTextAttributes() {
        TextAttributes textAttributes = null;
        textAttributes = new TextAttributes();
        textAttributes.setBackgroundColor(JBColor.RED);
        textAttributes.setErrorStripeColor(JBColor.RED);
        return textAttributes;
    }
}

1 Ответ

1 голос
/ 13 марта 2020

Я считаю, что вы должны использовать com.intellij.codeInsight.daemon.LineMarkerProvider .

См. этот пост и этот пример .

...