Review this. I think this is what you are after, except the group element.
import java.awt.event.MouseEvent;
import java.io.IOException;
import java.text.DecimalFormat;
import com.esri.arcgis.addins.desktop.Tool;
import com.esri.arcgis.arcmapui.IMxDocument;
import com.esri.arcgis.carto.GroupElement;
import com.esri.arcgis.carto.IActiveView;
import com.esri.arcgis.carto.IGraphicsContainer;
import com.esri.arcgis.carto.MarkerElement;
import com.esri.arcgis.carto.TextElement;
import com.esri.arcgis.display.IDisplayTransformation;
import com.esri.arcgis.display.IScreenDisplay;
import com.esri.arcgis.display.ITextSymbol;
import com.esri.arcgis.display.RgbColor;
import com.esri.arcgis.display.SimpleMarkerSymbol;
import com.esri.arcgis.display.TextSymbol;
import com.esri.arcgis.display.esriTextVerticalAlignment;
import com.esri.arcgis.framework.IApplication;
import com.esri.arcgis.geometry.IPoint;
import com.esri.arcgis.geometry.ISpatialReference;
import com.esri.arcgis.geometry.Point;
import com.esri.arcgis.geometry.SpatialReferenceEnvironment;
import com.esri.arcgis.interop.AutomationException;
import com.esri.arcgis.support.ms.stdole.StdFont;
public class Tool1 extends Tool {
private IApplication app;
private IActiveView av;
private IMxDocument mxDocument;
private String message;
@Override
public void activate() throws IOException, AutomationException {
}
@Override
public void init(IApplication arg0) throws IOException, AutomationException {
super.init(arg0);
this.app = arg0;
mxDocument = (IMxDocument) app.getDocument();
av = mxDocument.getActiveView();
}
@Override
public void mousePressed(MouseEvent mouseEvent) {
super.mousePressed(mouseEvent);
try{
Point point1 = new Point(); // point where user clicks
point1.putCoords((double)mouseEvent.getX(), (double)mouseEvent.getY());
Point point2 = (Point) getMapCoordinatesFromScreenCoordinates(point1,av);
double x = point2.getX();
double y = point2.getY();
DecimalFormat df = new DecimalFormat("#.####");
message = "x: " + df.format(x) + " y: " + df.format(y);
RgbColor color = new RgbColor();
color.setRed(255);
StdFont font = new StdFont();
font.setName("Arial");
SimpleMarkerSymbol sms = new SimpleMarkerSymbol();
sms.setStyle(com.esri.arcgis.display.esriSimpleMarkerStyle.esriSMSCircle);
sms.setColor(color);
MarkerElement me = new MarkerElement();
me.setSymbol(sms);
me.setGeometry(point2);
me.setName("me");
ITextSymbol textSymbol = new TextSymbol();
textSymbol.setColor(color);
textSymbol.setFont(font);
textSymbol.setSize(9);
textSymbol.setVerticalAlignment(esriTextVerticalAlignment.esriTVACenter);
TextElement textElement = new TextElement();
textElement.setSymbol(textSymbol);
textElement.setColor(color);
textElement.setText(message);
textElement.setGeometry(point2);
textElement.setYOffset(11.27);
textElement.setName("textElement");
GroupElement gp = new GroupElement();
gp.addElement(textElement);
gp.addElement(me);
gp.setName("click location");
IGraphicsContainer graphicsContainer = av.getGraphicsContainer();
graphicsContainer.addElement(gp, 0);
av.partialRefresh(com.esri.arcgis.carto.esriViewDrawPhase.esriViewGraphics, gp, av.getExtent());
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public IPoint getMapCoordinatesFromScreenCoordinates(IPoint screenPoint, IActiveView activeView)throws Exception{
if (screenPoint == null || screenPoint.isEmpty() || activeView == null)
return null;
IScreenDisplay screenDisplay = activeView.getScreenDisplay();
IDisplayTransformation displayTransformation = screenDisplay.getDisplayTransformation();
return displayTransformation.toMapPoint((int)screenPoint.getX(), (int)
screenPoint.getY());
}
}
[ATTACH=CONFIG]33310[/ATTACH]