Сделать все подсказки многострочными в Java (Swing) - PullRequest
4 голосов
/ 30 марта 2012

Всплывающие подсказки в моем приложении могут быть довольно длинными, поэтому я бы хотел, чтобы у них были разрывы строк.

Я не хочу использовать html , так как вместо этого я бы предпочел установить (максимальную) ширину моих всплывающих подсказок и динамически разрывать строки.

В принятом ответе на этот похожий вопрос Многострочные всплывающие подсказки на Java? Я читал о JMultiLineToolTip. К сожалению, предоставленная ссылка больше не работает, и существует множество различных JMultiLineToolTip. Поэтому мои два вопроса:

  1. Какой JMultiLineToolTip лучше использовать?
  2. Как я могу использовать такой класс для представления всех подсказок в моем приложении?

РЕДАКТИРОВАТЬ: как все, кажется, рекомендуют использовать html, есть ли способ определить ширину моей подсказки в пикселях (или в какой-то другой единице, кроме количества символов), используя html?

Ответы [ 2 ]

7 голосов
/ 30 марта 2012

Если вы не боитесь удлинить инструмент для поворота, вы можете создать свой собственный JMultiLineToolTip:

  1. Расширение JTooltip В расширенной реализации компонента Tool tip,
  2. установка пользовательского интерфейса подсказки в реализации customUI
  3. Реализация paint() метода для записи заданной строки в многострочное

Вот пример - он также показывает, как его использовать

Однако, чтобы ответить на ваши вопросы:

  1. Какой JMultiLineToolTip лучше использовать?

    Использование <html>

  2. Как я могу использовать такой класс для представления всех всплывающих подсказок в моем приложении?

    Для каждого компонента это легко, но утомительно, поскольку вам придется переопределить creatreToolTip () API. Но если вы хотите изменить его глобально, вы можете:

    (i) Простой способ - зарегистрируйте пользовательский интерфейс всплывающей подсказки с помощью UIManager в начале выполнения.

    UIManager.put( "ToolTipUI", "SeNormToolTipUI" );

    UIManager.put( "SeNormToolTipUI",Class.forName( multiLineToolTipUIClassName ) );

    (ii) сложный способ

    Вам придется начать реализовывать свой собственный внешний вид. В реализации внешнего вида вы должны указать значения по умолчанию для ToolTipUI в качестве реализации пользовательского интерфейса, а затем настроить внешний вид приложения, которое вы используете. Например, взгляните на реализацию MetalLookAndFeel . Вы можете просто расширить эту часть и внедрить свой на lnf.

Итак, лучше использовать <html>

4 голосов
/ 30 марта 2012

1) Html - самый простой способ для простого JToolTip

2) используйте JWindow (без оформления JDialog) с JTextArea, лучше будет JTextPane (с поддержкой стилизованного текста),

  • недостатком является то, что вы должны вручную установить окно на Point, вы должны вручную установить для setInitialDelay и setDismissDelay (таймер качания), setVisible(true/false)

  • преимущество заключается в том, что вы используете полностью управляемый контейнер верхнего уровня с определениями для своего родителя

3) Я использую JLabel с отформатированным и стилизованным текстом Html, добавленным к GlassPane, заметьте, что самая простая альтернатива - использовать non_opaque JLayeredPane (Java6) или JLayer (Java7)

...