// 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);
}
}
|