Я хочу реализовать небольшую всплывающую подсказку с полосой прокрутки, как в eclipse, которая появляется при наведении курсора на класс или член.
Проблема, с которой я сталкиваюсь, заключается в том, чтобы найти способ ограничить только ширину, но не высоту компонента в области прокрутки, которая у меня есть внутри моей всплывающей подсказки. Компонент должен поддерживать HTML, а также правильно оборачивать текст, когда он превышает ширину внутренних границ, но все компоненты, которые я пробовал, имеют либо перенос строки, либо рендеринг HTML, но не оба одновременно.
Также нигде нельзя найти способ ограничить только ширину, поскольку для каждого «setXSize», где X «предпочтительно», «максимум», «минимум» и т. д., все требуют двух аргументов, и для компонентов нет метода «setMaxWidth».
Установка "setMaximumSize(new Dimension(256, Integer.MAX_VALUE));" может показаться решением, но она не работает, так как параметры, заданные "max" и "min", большую часть времени игнорируются, что довольно неприятно.
По запросу актуальный пример реализации:
public class MyTooltip extends JTooltip{
private JScrollPane scroll;
private JEditorPane pane;
public MyTooltip(String htmlCode){
this.pane = new JEditorPane();
this.scroll = new JScrollPane(this.pane);
this.pane.setEditable(false);
this.pane.setContentType("text/html");
this.scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
//Here the problems begin
this.pane.setMaximumSize(new Dimension(512, Integer.MAX_VALUE));
this.scroll.setMaximumSize(new Dimension(512, Integer.MAX_VALUE));
this.pane.setText(htmlCode);
this.add(scroll);
}
}
- фактический код немного сложнее. но я думаю, что это хорошее приближение...