关于ToolTip:我要在自己的视图上,当鼠标移到某个位置的时候,显示一个tooltip,怎么做?

时间:2022-06-23 10:32:49
视图上我自己画了多个图标,我能知道鼠标现在是否移动到某个图标,不同的图标tooltip是不一样的。该怎么做呢?

19 个解决方案

#1


你的视图指的是什么?

#2


1、继承JComponent类和MouseListener方法
extends JComponent implements   MouseListener
2、实现MouseListener接口mouseExited方法

#3


to: woowindice(黑山老妖) 
我所说的视图就是一个从javax.swing.JComponent派生的东西

to: dongtr00(童叟无欺) 
我已经在mousemoved事件中得到了当前所在的图标,也知道了现在应该显示什么文字,我想知道的是怎么显示这个tooltip框

#4


JButton k = new JButton();
j.setToolTipText("this is a tool tip text!");

#5


你把Icon set到JLabel上,然后调用setToolTipText

public void setToolTipText(String text)

#6





你把图标放到JLabel上,然后调用setToolTipText


#7


看看jdk/demo/jfc下的swingset2里面的tooltip演示
你的视图类自己实现一个
public String getToolTipText(MouseEvent evt){}方法,实现取得不同tooltip内容的逻辑,然后对视图类实例调用getToolTip("")方法--参数为""即可

#8


to: cnjava(蕴藏的智慧)
可惜,这些图标不是我自己画上去的,是用的别人的组件。所以这个方法也没法用

#9


小失误,应该是对视图类调用setToolTip("");

#10


小失误,应该是对视图类调用setToolTip("");

#11


小失误,应该是对视图类调用setToolTip("");

public String getToolTipText(MouseEvent evt){
 //根据evt取得鼠标位置
 //根据鼠标位置取得应显示的tooltip string
 //return tooltip string
}

#12


可以自己做一个,首先在你的视图上捕捉鼠标位置,如果它在某个图标上(也就是某个矩形包含当前鼠标坐标),则弹出toolTip,toolTip可以利用 Apocalypse(逍遥思辨) 所说的,也可以自己做,就是继承一个JWindow,在上边放一个JLabel,提示字符就放在Jlabel里,JWindow.show(x,y),即可,鼠标不在范围内就隐藏。此时你会明白JBuilder里的输入.后面弹出的东西是怎样做得了。

#13


我能不能直接利用JToolTip这个类呢?

#14


如果他们是继承自JComponent,应该可以用setToolTip(String str)方法的。

#15


writer an adapter for the component

#16


我想在JLabel中显示多行文字,可是"this is tip\nthis is 2nd tip"被显示在同一行中,\n被显示成一个方框,怎么办?

#17


to  pentax() :
我用你的办法,好像快好了。

我把JLabel换成JTextArea,好了。

但是JWindow被show之后主窗口成为非当前窗口了,也就是说标题栏变灰了,怎么能不让它变灰?

#18


如果你需要更好的toolTip,可以自己画出来。我就是自己画的。建议看看demo下的SwingSet2和Java2D的例子。

#19


up!gz!

#1


你的视图指的是什么?

#2


1、继承JComponent类和MouseListener方法
extends JComponent implements   MouseListener
2、实现MouseListener接口mouseExited方法

#3


to: woowindice(黑山老妖) 
我所说的视图就是一个从javax.swing.JComponent派生的东西

to: dongtr00(童叟无欺) 
我已经在mousemoved事件中得到了当前所在的图标,也知道了现在应该显示什么文字,我想知道的是怎么显示这个tooltip框

#4


JButton k = new JButton();
j.setToolTipText("this is a tool tip text!");

#5


你把Icon set到JLabel上,然后调用setToolTipText

public void setToolTipText(String text)

#6





你把图标放到JLabel上,然后调用setToolTipText


#7


看看jdk/demo/jfc下的swingset2里面的tooltip演示
你的视图类自己实现一个
public String getToolTipText(MouseEvent evt){}方法,实现取得不同tooltip内容的逻辑,然后对视图类实例调用getToolTip("")方法--参数为""即可

#8


to: cnjava(蕴藏的智慧)
可惜,这些图标不是我自己画上去的,是用的别人的组件。所以这个方法也没法用

#9


小失误,应该是对视图类调用setToolTip("");

#10


小失误,应该是对视图类调用setToolTip("");

#11


小失误,应该是对视图类调用setToolTip("");

public String getToolTipText(MouseEvent evt){
 //根据evt取得鼠标位置
 //根据鼠标位置取得应显示的tooltip string
 //return tooltip string
}

#12


可以自己做一个,首先在你的视图上捕捉鼠标位置,如果它在某个图标上(也就是某个矩形包含当前鼠标坐标),则弹出toolTip,toolTip可以利用 Apocalypse(逍遥思辨) 所说的,也可以自己做,就是继承一个JWindow,在上边放一个JLabel,提示字符就放在Jlabel里,JWindow.show(x,y),即可,鼠标不在范围内就隐藏。此时你会明白JBuilder里的输入.后面弹出的东西是怎样做得了。

#13


我能不能直接利用JToolTip这个类呢?

#14


如果他们是继承自JComponent,应该可以用setToolTip(String str)方法的。

#15


writer an adapter for the component

#16


我想在JLabel中显示多行文字,可是"this is tip\nthis is 2nd tip"被显示在同一行中,\n被显示成一个方框,怎么办?

#17


to  pentax() :
我用你的办法,好像快好了。

我把JLabel换成JTextArea,好了。

但是JWindow被show之后主窗口成为非当前窗口了,也就是说标题栏变灰了,怎么能不让它变灰?

#18


如果你需要更好的toolTip,可以自己画出来。我就是自己画的。建议看看demo下的SwingSet2和Java2D的例子。

#19


up!gz!