如题,请问如何在绘制的图形(如Rectangle)上双击,出现一个文本编辑框,可输入、编辑文字呢?谢谢!

解决方案 »

  1.   

    先定义个text,visible为false,监控Rectangle双击事件,左键双击,把text的visible设为true就好了。完了text的值该怎么处理就怎么处理
      

  2.   

    需要设置布局为绝对布局,即setLayout(null)。
      

  3.   

    是定义一个String text;呢还是定义一个Textarea text或者Textfield text呢?效果要求是双击后要出现一个文本编辑框进行文本编辑,完事儿后要能够在图形上显示的。谢谢~
      

  4.   

    package Default;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Point;
    import java.awt.Shape;
    import java.awt.Stroke;
    import java.awt.geom.Area;
    import java.awt.geom.Ellipse2D;
    import java.awt.geom.Point2D;
    import java.awt.geom.Rectangle2D;
    import java.io.Serializable;
    //import SelectShapes.Selects;public class DrawBook extends ShapeType implements Serializable{
    private static final long serialVersionUID = 1L;
        private int Default_Radius=10;//初始化圆的半径为5
        private int centerPointX=0;//初始化圆心的X坐标
        private int centerPointY=0;//初始化圆心的Y坐标
        private int Default_Width=15;//初始化矩形的宽度为15
    private int Default_Height=10;//初始化矩形的高度为10
    private Shape e;
    //private int drag=-1;
    //private Rectangle2D bbox=null;
    public DrawBook(Point2D CurrentPoint, Color color, Color Fillcolor,
    double Size, Stroke stroke,Graphics2D graphics) 
    {
    //初始化父类的构造函数
    super(CurrentPoint, color, Fillcolor, Size, stroke,graphics);
     shape=draw(graphics);
    // TODO Auto-generated constructor stub
     
    }
    public Shape draw(Graphics2D graphics) 
    {
     //设置圆的边框的粗细
         graphics.setStroke(getStroke());
        
         //设置圆的边框的颜色
         graphics.setPaint(getColor());
         //填充当前圆的颜色
         
         //设置圆左上角点的坐标和圆半径
         setCenterPointX();
         setCenterPointY();
         Rectangle2D shape1=new Rectangle2D.Double(getCenterPointX()-getDefault_Width()*getSizes()/2, getCenterPointY()-getDefault_Height()*getSizes()/2, 
     getDefault_Width()*getSizes(), getDefault_Height()*getSizes());
         Ellipse2D shape2= new Ellipse2D.Double(getCenterPointX()-getDefault_Width()*getSizes()/2-getDefault_Radius()*getSizes()/2,getCenterPointY()-getDefault_Height()*getSizes()/2,       
          getDefault_Radius()*getSizes(),getDefault_Radius()*getSizes());
         Ellipse2D shape3= new Ellipse2D.Double(getCenterPointX()+getDefault_Width()*getSizes()/2-getDefault_Radius()*getSizes()/2,getCenterPointY()-getDefault_Height()*getSizes()/2,       
          getDefault_Radius()*getSizes(),getDefault_Radius()*getSizes());
      Area area1=new Area(shape1);
        Area area2=new Area(shape2);
        Area area3=new Area(shape3);
    area1.add(area2);
    area1.subtract(area3);
    e=area1;
    return e; 


    }
    public void setCenterPointX()
        {
         //设置当前点的X坐标
         this.centerPointX=(int) getCurrentPoint().getX();
        }
        public int getCenterPointX()
        {
         //返回当前点的X坐标
         return this.centerPointX;
        }
        
        public void setCenterPointY()
        {
         //设置当前点的Y坐标
         this.centerPointY=(int) getCurrentPoint().getY();
        }
        public int getCenterPointY()
        {
         //返回当前点的Y坐标
         return this.centerPointY;
        }
        
        public int getDefault_Radius()
        {
         //返回圆的半径
         return this.Default_Radius;
        }
        public void setDefault_Radius(int radius)
        {
         //设置圆的半径
         this.Default_Radius=radius;
        }
        public void setDefault_Width(int width)
    {
    //设置当前矩形的宽度
         this.Default_Width=width;
    }
    public int getDefault_Width()
    {
    //返回当前矩形的宽度
         return this.Default_Width;
    }

    public void setDefault_Height(int height)
    {
    //设置当前矩形的高度
         this.Default_Height=height;
    }  
    public int getDefault_Height()
    {
    //返回当前矩形的高度
         return this.Default_Height;
    }
    }
    //该类的父类继承了JLable,该类可以绘制出一个“书形”的图形,问题是如何在书形上双击出现文本框,并可编辑~
      

  5.   

    建议你看看http://topic.csdn.net/u/20090203/11/1e4a8672-e58c-4426-860b-b2e0939be82b.html
    看能不能作出你那样的效果,主要就是你要拿到图形的画笔,再在图像上画出你想写的字,也可以设置向对应的位置,自己做下
    记住要添加图形区域想对应的位置的事件
    并向1楼所说的添加一个文本框控制你的输入