Skip to main content

[JAVA2D] tooltiptext

1 reply [Last post]
Anonymous

Im hoping that someone can give me some insight on the following issue:

I am writing a java 2D imaging application that allows the user to
annotate crosses on top of a jpeg image (among allowing other image
manipulations as well). I have been trying to implement a tooltip for
each of the annotations so that it will display some info about that
particular annotation. To do so, I created a class called
crossAnnotation that extends JComponent, thus allowing me use the
setToolTipText method for each crossAnnotation object. The problem
however, is that when I add the crossAnnoation(JComponent) obect to the
imageCanvas(JPanel) where the image is drawn my whole program freezes.
The program can't seem to handle the crossAnnotation being added to the
imageCanvas as JComponent. Anyone know why? or maybe how I can
implement the toolTip in some other way (but as far as I can se toolTip
only works with JComponent)? Any help would be greatly appreciated.

Thanks
Dave

Here's my code for crossAnnotation

public class CrossAnnotation extends JComponent{

private GeneralPath p;
private double drawX, drawY;
private double magFactor;

private Graphics2D g2D;
private Spot2GPlate spot;

public CrossAnnotation(double drawX, double drawY, double magFactor,
Graphics2D g2D, Spot2GPlate spot) {
//addMouseListener(this);
this.drawX = drawX;
this.drawY = drawY;
this.magFactor = magFactor;
this.g2D = g2D;
this.spot = spot;
this.setToolTipText("aupa!!!!");
//makeCross();
}

public void make(int swidth, int sheight, double magFactor, double
width, double height){
p = new GeneralPath(GeneralPath.WIND_NON_ZERO);
p.moveTo(0, -sheight);
p.lineTo(0, sheight);
p.moveTo(-swidth, 0);
p.lineTo(swidth, 0);
//this.setSize(swidth*2, sheight*2);
}

public void setColorandDraw(int i, SpotList spotList, int gelType,
boolean annotatedCanvas){
if(i < spotList.getNumAnnotated())
{
if ((spot.getSpotExpressionTarget() -
spot.getSpotExpressionControl()) > 0)
{
if(gelType == 1)
g2D.setColor(Color.red);
else
{
g2D.setColor(new Color(0,150,0)); }
}
else
{
if(gelType == 1)
{
g2D.setColor(new Color(0,150,0)); }
else
g2D.setColor(Color.red);
}

this.drawAnnotation(drawX, drawY);
}
else
{
if(spotList.size() > spotList.getNumAnnotated())
{
if(annotatedCanvas)
g2D.setColor(Color.red);
else
g2D.setColor(new Color(0,150,0));

this.drawAnnotation(drawX, drawY);
}
}
}

public void setAnnotationLabel(int canvasH){
//System.out.println("canvasH: "+canvasH);
g2D.setColor(Color.blue);
Font f = new Font("Dialog", Font.PLAIN, (int)(12*magFactor));
g2D.setFont(f);
//g2D.translate(drawX, drawY);
g2D.drawString(spot.getSpotIdentifier(),
(int)(drawX-(15*magFactor)), (int)(drawY-((canvasH/36)*magFactor)));
//g2D.dispose();
}

public void drawAnnotation(double drawX, double drawY){
//g2D.setColor(Color.red);
g2D.translate(drawX, drawY);
g2D.draw(p);
g2D.translate(-drawX, -drawY);
//g2D.dispose();
}

/*public void mouseClicked(MouseEvent e) {
//To change body of implemented methods use File | Settings |
File Templates.
}

public void mouseEntered(MouseEvent e) {
System.out.println("mouseEntered");
this.setToolTipText("x: "+drawX+" y: "+drawY);//To change body
of implemented methods use File | Settings | File Templates.
}

public void mouseExited(MouseEvent e) {
//To change body of implemented methods use File | Settings |
File Templates.
}

public void mousePressed(MouseEvent e) {
//To change body of implemented methods use File | Settings |
File Templates.
}

public void mouseReleased(MouseEvent e) {
//To change body of implemented methods use File | Settings |
File Templates.
}
*/

}

===========================================================================
To unsubscribe, send email to listserv@java.sun.com and include in the body
of the message "signoff JAVA2D-INTEREST". For general help, send email to
listserv@java.sun.com and include in the body of the message "help".
[att1.html]

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Dmitri Trembovetski

Hi Dave,

Could you please provide a stack trace when the app is frozen?
Hit Ctrl+\ on unix, and Ctrl+Break on windows.

Thank you,
Dmitri

On Wed, Nov 03, 2004 at 11:08:37AM +0100, Braun-Friedman, David wrote:
> Im hoping that someone can give me some insight on the following issue:
>
> I am writing a java 2D imaging application that allows the user to
> annotate crosses on top of a jpeg image (among allowing other image
> manipulations as well). I have been trying to implement a tooltip for
> each of the annotations so that it will display some info about that
> particular annotation. To do so, I created a class called
> crossAnnotation that extends JComponent, thus allowing me use the
> setToolTipText method for each crossAnnotation object. The problem
> however, is that when I add the crossAnnoation(JComponent) obect to the
> imageCanvas(JPanel) where the image is drawn my whole program freezes.
> The program can't seem to handle the crossAnnotation being added to the
> imageCanvas as JComponent. Anyone know why? or maybe how I can
> implement the toolTip in some other way (but as far as I can se toolTip
> only works with JComponent)? Any help would be greatly appreciated.
>
>
> Thanks
> Dave
>
> Here's my code for crossAnnotation
>
>
> public class CrossAnnotation extends JComponent{
>
> private GeneralPath p;
> private double drawX, drawY;
> private double magFactor;
>
> private Graphics2D g2D;
> private Spot2GPlate spot;
>
> public CrossAnnotation(double drawX, double drawY, double magFactor,
> Graphics2D g2D, Spot2GPlate spot) {
> //addMouseListener(this);
> this.drawX = drawX;
> this.drawY = drawY;
> this.magFactor = magFactor;
> this.g2D = g2D;
> this.spot = spot;
> this.setToolTipText("aupa!!!!");
> //makeCross();
> }
>
> public void make(int swidth, int sheight, double magFactor, double
> width, double height){
> p = new GeneralPath(GeneralPath.WIND_NON_ZERO);
> p.moveTo(0, -sheight);
> p.lineTo(0, sheight);
> p.moveTo(-swidth, 0);
> p.lineTo(swidth, 0);
> //this.setSize(swidth*2, sheight*2);
> }
>
> public void setColorandDraw(int i, SpotList spotList, int gelType,
> boolean annotatedCanvas){
> if(i < spotList.getNumAnnotated())
> {
> if ((spot.getSpotExpressionTarget() -
> spot.getSpotExpressionControl()) > 0)
> {
> if(gelType == 1)
> g2D.setColor(Color.red);
> else
> {
> g2D.setColor(new Color(0,150,0)); }
> }
> else
> {
> if(gelType == 1)
> {
> g2D.setColor(new Color(0,150,0)); }
> else
> g2D.setColor(Color.red);
> }
>
> this.drawAnnotation(drawX, drawY);
> }
> else
> {
> if(spotList.size() > spotList.getNumAnnotated())
> {
> if(annotatedCanvas)
> g2D.setColor(Color.red);
> else
> g2D.setColor(new Color(0,150,0));
>
> this.drawAnnotation(drawX, drawY);
> }
> }
> }
>
> public void setAnnotationLabel(int canvasH){
> //System.out.println("canvasH: "+canvasH);
> g2D.setColor(Color.blue);
> Font f = new Font("Dialog", Font.PLAIN, (int)(12*magFactor));
> g2D.setFont(f);
> //g2D.translate(drawX, drawY);
> g2D.drawString(spot.getSpotIdentifier(),
> (int)(drawX-(15*magFactor)), (int)(drawY-((canvasH/36)*magFactor)));
> //g2D.dispose();
> }
>
> public void drawAnnotation(double drawX, double drawY){
> //g2D.setColor(Color.red);
> g2D.translate(drawX, drawY);
> g2D.draw(p);
> g2D.translate(-drawX, -drawY);
> //g2D.dispose();
> }
>
>
>
> /*public void mouseClicked(MouseEvent e) {
> //To change body of implemented methods use File | Settings |
> File Templates.
> }
>
> public void mouseEntered(MouseEvent e) {
> System.out.println("mouseEntered");
> this.setToolTipText("x: "+drawX+" y: "+drawY);//To change body
> of implemented methods use File | Settings | File Templates.
> }
>
> public void mouseExited(MouseEvent e) {
> //To change body of implemented methods use File | Settings |
> File Templates.
> }
>
> public void mousePressed(MouseEvent e) {
> //To change body of implemented methods use File | Settings |
> File Templates.
> }
>
> public void mouseReleased(MouseEvent e) {
> //To change body of implemented methods use File | Settings |
> File Templates.
> }
> */
>
> }
>
>
> ===========================================================================
> To unsubscribe, send email to listserv@java.sun.com and include in the body
> of the message "signoff JAVA2D-INTEREST". For general help, send email to
> listserv@java.sun.com and include in the body of the message "help".

===========================================================================
To unsubscribe, send email to listserv@java.sun.com and include in the body
of the message "signoff JAVA2D-INTEREST". For general help, send email to
listserv@java.sun.com and include in the body of the message "help".