использование JToolTip - PullRequest
2 голосов
/ 12 июля 2010

Я хочу использовать этот класс и вызывать не метод JComponent setToolTipText, а код ниже не показывается всплывающая подсказка:

JButton btn = new JButtn("SAVE");
JToolTip tip_for_button = new JToolTip();
tip_for_button.setTipText("blah blah");
tip_for_button.setComponent(btn);

почему

Ответы [ 3 ]

3 голосов
/ 12 июля 2010

Ну, потому что весь код, который на самом деле ловит событие мыши и показывает всплывающую подсказку, находится в ToolTipManager (экземпляр этого класса - singleton, уникальный в приложении), а ToolTipManager всегда вызывает метод JComponent.createToolTip() длякомпонент при определении того, какую подсказку показывать.Поэтому, если вы хотите использовать свою собственную подсказку, вы должны переопределить этот метод и написать что-то вроде этого:

JButton btn = new JButton("SAVE"){

        public JToolTip createToolTip() {
           JToolTip tip_for_button = new JToolTip(){
               public String getTipText() {
                   return "blah blah";
               }
           };
           tip_for_button.setComponent(this);
           return tip_for_button;
       }
       };
       btn.setToolTipText("notnull");

setToolTipText является обязательным, иначе подсказка не будет отображаться, и текст, переданный ейвсегда устанавливайте подсказку, созданную Компонентом, поэтому, если вы хотите неизменный текст, вы переопределяете JToolTip.getTipText().

1 голос
/ 12 июля 2010

Возможно, вам нужно вызвать setToolTipText ().Подробнее см. http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/components/tooltip.html.

0 голосов
/ 12 июля 2010

Что такое tip_for_button? Чтобы он работал, я почти уверен, что tip_for_button должно быть tip

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...