Grinding4.java: Difference between revisions
Appearance
Created page with "Back to Grinding Java - Enhancing the AWT <PRE> package GUITools; import GUITools.Tooltip; import java.AWT.*; import java.AWT.event.*; /** * The Hints class was developed ..." |
m Ak120 moved page Grinding Java - Enhancing the AWT:grinding4.java to Grinding4.java |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<PRE> | <PRE> | ||
package GUITools; | package GUITools; | ||
Line 21: | Line 19: | ||
{ | { | ||
/** | /** | ||
* The constructor accepts the | * The constructor accepts the following parameters: | ||
* displayArea - The Container where the tooltip will show on, this has to be | * displayArea - The Container where the tooltip will show on, this has to be | ||
* the same place where the Component is (this is a slight | * the same place where the Component is (this is a slight limitation). | ||
* hintOwner - The Component to which the tooltip refers. | * hintOwner - The Component to which the tooltip refers. | ||
* textFont - The font used in the tooltip. | * textFont - The font used in the tooltip. | ||
* hintText - The text of the tooltip. | * hintText - The text of the tooltip. | ||
* orientation - A constant (one of those defined below) | * orientation - A constant (one of those defined below) referring to the location | ||
* of the tooltip relatively to the Component. | * of the tooltip relatively to the Component. | ||
**/ | **/ | ||
Line 104: | Line 102: | ||
/** | /** | ||
* This method calculates the X and Y where the | * This method calculates the X and Y where the Tooltip should be drawn | ||
* considering the orientation and the font size. | * considering the orientation and the font size. | ||
**/ | **/ | ||
Line 174: | Line 172: | ||
private Tooltip tooltipInstance = null; // The tooltip that will be used. | private Tooltip tooltipInstance = null; // The tooltip that will be used. | ||
private String hintText; // The text of the hint. | private String hintText; // The text of the hint. | ||
private Container displayArea; // The area | private Container displayArea; // The area contains the hintOwner where | ||
// the label will be displayed. | // the label will be displayed. | ||
private Component hintOwner; // The Component to which this hint refers | private Component hintOwner; // The Component to which this hint refers | ||
private int orientation = 0; | private int orientation = 0; | ||
public static final int TOP_LEFT = 1; // These are all the possible | public static final int TOP_LEFT = 1; // These are all the possible | ||
public static final int TOP = 2; // orientation | public static final int TOP = 2; // orientation values. | ||
public static final int TOP_RIGHT = 3; | public static final int TOP_RIGHT = 3; | ||
public static final int LEFT = 4; | public static final int LEFT = 4; | ||
Line 187: | Line 185: | ||
public static final int BOTTOM = 8; | public static final int BOTTOM = 8; | ||
} | } | ||
</PRE> | </PRE> | ||
[[Category:Grinding Java]] | |||
[[Category: |
Latest revision as of 14:49, 14 June 2019
package GUITools; import GUITools.Tooltip; import java.AWT.*; import java.AWT.event.*; /** * The Hints class was developed to encapsulate the Tooltip class * This class draws a yellow label tooltip (or hint/hovering help...). * This class takes care of all the tooltip showing and hideing events. * This class was developed to run under JDK 1.1.1, with very little assistance * from VisualAge for Java, most of the work was done using javac. * This class was written by Shai Almog 5/4/97. The sorce is in the public * domain and may be modified and used freely. It is not a requirment but * I would consider it good manners if you credit me and EDM/2 (www.edm2.com) * in applications in which this code was used ;-) **/ class Hints extends Component implements MouseListener { /** * The constructor accepts the following parameters: * displayArea - The Container where the tooltip will show on, this has to be * the same place where the Component is (this is a slight limitation). * hintOwner - The Component to which the tooltip refers. * textFont - The font used in the tooltip. * hintText - The text of the tooltip. * orientation - A constant (one of those defined below) referring to the location * of the tooltip relatively to the Component. **/ public Hints(Container displayArea,Component hintOwner,Font textFont, String hintText,int orientation) { this.orientation = orientation; this.hintText = hintText; this.hintOwner = hintOwner; this.displayArea = displayArea; setFont(textFont); hintOwner.addMouseListener(this); } public void setBackColor(Color c) { backColor = c; } public void setTextColor(Color c) { textColor = c; } public void setFont(Font textFont) { if (textFont == null) throw (new NullPointerException("Font textFont is null!")); this.textFont = textFont; } /** * Invoked when the mouse has been clicked on a component. * Required by the MouseListener interface. **/ public void mouseClicked(MouseEvent e) { } /** * Invoked when a mouse button has been pressed on a component. * Required by the MouseListener interface. **/ public void mousePressed(MouseEvent e) { } /** * Invoked when a mouse button has been released on a component. * Required by the MouseListener interface. **/ public void mouseReleased(MouseEvent e) { } /** * Invoked when the mouse enters a component. * Required by the MouseListener interface. **/ public void mouseEntered(MouseEvent e) { calculateXY(); tooltipInstance = new Tooltip(hintText,textFont,displayArea,x,y); tooltipInstance.paint(displayArea.getGraphics()); } /** * Invoked when the mouse exits the component. * Required by the MouseListener interface. **/ public void mouseExited(MouseEvent e) { tooltipInstance.dispose(); tooltipInstance = null; displayArea.repaint(); } /** * This method calculates the X and Y where the Tooltip should be drawn * considering the orientation and the font size. **/ private void calculateXY() { FontMetrics fontSize = getToolkit().getFontMetrics(textFont); int fontWidth = fontSize.stringWidth(hintText); int fontHeight = fontSize.getHeight(); switch(orientation) { case TOP_LEFT: { x = hintOwner.getLocation().x - fontWidth; y = hintOwner.getLocation().y - fontHeight; break; } case TOP: { x = hintOwner.getLocation().x - fontWidth; y = hintOwner.getLocation().y; break; } case TOP_RIGHT: { x = hintOwner.getLocation().x + hintOwner.getSize().width; y = hintOwner.getLocation().y - fontHeight; break; } case LEFT: { x = hintOwner.getLocation().x - fontWidth; y = hintOwner.getLocation().y + (hintOwner.getSize().height / 2) - fontHeight; break; } case RIGHT: { x = hintOwner.getLocation().x + hintOwner.getSize().width; y = hintOwner.getLocation().y + (hintOwner.getSize().height / 2) - fontHeight; break; } case BOTTOM_RIGHT: { x = hintOwner.getLocation().x + hintOwner.getSize().width; y = hintOwner.getLocation().y + hintOwner.getSize().height; break; } case BOTTOM_LEFT: { x = hintOwner.getLocation().x - fontWidth; y = hintOwner.getLocation().y + hintOwner.getSize().height; break; } case BOTTOM: { x = hintOwner.getLocation().x; y = hintOwner.getLocation().y + hintOwner.getSize().height; break; } } } private int x,y; // The x and y location where the hint will be // displayed (relative to the container). private Color backColor = Color.yellow, // The background color of the hint. textColor = Color.black; // The text color of the hint. private Font textFont; // The font of the hint. private Tooltip tooltipInstance = null; // The tooltip that will be used. private String hintText; // The text of the hint. private Container displayArea; // The area contains the hintOwner where // the label will be displayed. private Component hintOwner; // The Component to which this hint refers private int orientation = 0; public static final int TOP_LEFT = 1; // These are all the possible public static final int TOP = 2; // orientation values. public static final int TOP_RIGHT = 3; public static final int LEFT = 4; public static final int RIGHT = 5; public static final int BOTTOM_RIGHT = 6; public static final int BOTTOM_LEFT = 7; public static final int BOTTOM = 8; }