Mega Code Archive

 
Categories / Java / Swing JFC
 

ToolTip Location Example

// Example from http://www.crionics.com/products/opensource/faq/swing_ex/SwingExamples.html /* (swing1.1.1) */ import java.awt.Container; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.UIManager; /**  * @version 1.0 08/27/98  */ public class ToolTipLocationExample extends JFrame {   public ToolTipLocationExample() {     super("ToolTip Location Example");     // above position     JButton buttonAbove = new JButton("Above") {       public Point getToolTipLocation(MouseEvent e) {         return new Point(20, -30);       }     };     buttonAbove.setToolTipText("Hello world");     // blow (default) position     JButton buttonBelow = new JButton("Below");     buttonBelow.setToolTipText("Hello world");     // whatever     final RelocatableToolTipButton buttonRelocate = new RelocatableToolTipButton(         "Relocate");     buttonRelocate.setToolTipText("Hello world");     buttonRelocate.addActionListener(new ActionListener() {       JPanel messagePanel = createPanel();       JTextField locationX, locationY;       public void actionPerformed(ActionEvent e) {         Point p = buttonRelocate.getToolTipLocation(null);         if (p == null) {           locationX.setText("default");           locationY.setText("default");         } else {           locationX.setText(Integer.toString(p.x));           locationY.setText(Integer.toString(p.y));         }         int result = JOptionPane.showOptionDialog(             ToolTipLocationExample.this, messagePanel, "Location",             JOptionPane.OK_CANCEL_OPTION,             JOptionPane.QUESTION_MESSAGE, null, null, null);         if (result == JOptionPane.OK_OPTION) {           try {             int x = Integer.parseInt(locationX.getText());             int y = Integer.parseInt(locationY.getText());             buttonRelocate.setToolTipLocation(new Point(x, y));           } catch (NumberFormatException ex) {             ex.printStackTrace();           }         }       }       private JPanel createPanel() {         JPanel p = new JPanel();         p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));         p.add(new JLabel("  X: "));         p.add(locationX = new JTextField());         p.add(new JLabel("  Y: "));         p.add(locationY = new JTextField());         return p;       }     });     JPanel panel = new JPanel();     panel.add(buttonAbove);     panel.add(buttonBelow);     panel.add(buttonRelocate);     Container c = getContentPane();     c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));     c.add(Box.createVerticalStrut(30));     c.add(panel);   }   class RelocatableToolTipButton extends JButton {     Point toolTipLocation;     RelocatableToolTipButton(String label) {       super(label);       toolTipLocation = null;     }     public Point getToolTipLocation(MouseEvent e) {       return toolTipLocation;     }     public void setToolTipLocation(Point location) {       toolTipLocation = location;     }   }   public static void main(String args[]) {     try {         UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");     } catch (Exception evt) {}           ToolTipLocationExample frame = new ToolTipLocationExample();     frame.addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent e) {         System.exit(0);       }     });     frame.setSize(300, 130);     frame.setVisible(true);   } }