java2D:请问,如何在图形上实现双击可添加文本 如题,请问如何在绘制的图形(如Rectangle)上双击,出现一个文本编辑框,可输入、编辑文字呢?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先定义个text,visible为false,监控Rectangle双击事件,左键双击,把text的visible设为true就好了。完了text的值该怎么处理就怎么处理 需要设置布局为绝对布局,即setLayout(null)。 是定义一个String text;呢还是定义一个Textarea text或者Textfield text呢?效果要求是双击后要出现一个文本编辑框进行文本编辑,完事儿后要能够在图形上显示的。谢谢~ 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,该类可以绘制出一个“书形”的图形,问题是如何在书形上双击出现文本框,并可编辑~ 建议你看看http://topic.csdn.net/u/20090203/11/1e4a8672-e58c-4426-860b-b2e0939be82b.html看能不能作出你那样的效果,主要就是你要拿到图形的画笔,再在图像上画出你想写的字,也可以设置向对应的位置,自己做下记住要添加图形区域想对应的位置的事件并向1楼所说的添加一个文本框控制你的输入 服务器端使用java.nio:远程主机强迫关闭了一个现有的连接 感觉大学里英语没学好,又想看英文原版的书,怎么办? 新手问问题二 array排序问题? 急!java socket怎样读取不定长包? 请教一个数学公式的实现 jsp中连接sqlserver2000的问题!!! 下一步怎么学? 哪里可以看到Obejct类clone的实现方法? 关于类的路径 求助,delphi对应的java类型 java动态加载,java文件生成,建立文件路径等
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,该类可以绘制出一个“书形”的图形,问题是如何在书形上双击出现文本框,并可编辑~
看能不能作出你那样的效果,主要就是你要拿到图形的画笔,再在图像上画出你想写的字,也可以设置向对应的位置,自己做下
记住要添加图形区域想对应的位置的事件
并向1楼所说的添加一个文本框控制你的输入