I am developing a small Swing app with tooltips on labels. This app has to react on mouse events such as click or exiting the frame.
With no tooltip, the app behaves correctly, but if I add tooltips I don't have mouse events anymore.
I wrote a small example to explain my problem, a JFrame with 3 Jlabels. The one in the center has a tooltip :
package testJtooltip;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.Border;
public class TestToolTip {
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setSize(new Dimension(100,150));
frame.setLocation(100, 100);
frame.setUndecorated(true);
frame.addMouseListener (
new MouseListener () {
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {
System.out.println("exited");
}
public void mousePressed(MouseEvent e) {
System.exit(0);
}
public void mouseReleased(MouseEvent arg0) {}
}
);
Border border = BorderFactory.createLineBorder(Color.BLUE, 1);
JLabel label1 = new JLabel();
label1.setBorder(border);
label1.setText("top");
label1.setPreferredSize(new Dimension(100, 50));
frame.add(label1,BorderLayout.PAGE_START);
JLabel label2 = new JLabel();
label2.setBorder(border);
label2.setText("center");
label2.setPreferredSize(new Dimension(100, 50));
label2.setToolTipText("tooltip");
frame.add(label2,BorderLayout.CENTER);
JLabel label3 = new JLabel();
label3.setBorder(border);
label3.setText("bottom");
label3.setPreferredSize(new Dimension(100, 50));
frame.add(label3,BorderLayout.PAGE_END);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
So, my problems are :
1) click on the center label doesn't exit (while click on the others exits).
2) no mouseExited is fired when exiting the frame by the left or right at the level of the center label (while the event is fired exiting elsewhere).
3) a mouseExited event is fired when moving from the top or bottom label to the center.
It "seems" that the JLabel with the tooltip is "outside" the frame.
What did I miss ? How could I repair that, specially the mouseExited event ?