简洁版的虚线矩形框
int xmin=Math.min(x1, x2),x3=xmin,xmax=Math.max(x1, x2),ymin=Math.min(y1, y2),ymax=Math.max(y1,y2);
for(;xmin<=xmax;xmin+=10){
g.drawLine(xmin, ymin, xmin+5, ymin);
g.drawLine(xmin,ymax,xmin+5,ymax);
}
for(;ymin<ymax;ymin+=10){
g.drawLine(x3,ymin,x3,ymin+5);
g.drawLine(xmax,ymin,xmax,ymin+5);
}
简洁版的多边形
Release里
if(command.equals("14")){
Graphics2D g1=(Graphics2D)g;
g1.setStroke(new BasicStroke(3));
g.drawLine(x1, y1, x2, y2);
}
Pressed里
//获取第一个按下点的坐标值
//只有在选定了多边形按钮时才记录第一次按下点的坐标,,若是先画铅笔拖拽的x1=x2 y1=y2很容易使x1y1成为闭合的起始值
if(b&&command.equals("14"){
int c=x1;
int d=y1;
b=false;
}
//x2!=0是为了在开始按下时便于原点相连,
if( x2!=0&&command.equals("14")){
Graphics2D g1=(Graphics2D)g;
g1.setStroke(new BasicStroke(3));
g.drawLine(x2, y2, x1, y1);
}
Click里
//判断单击时便首尾相连与第一次按下点相连,吧b值重新变为true为下一次开始重新获值,若不重置B值则永远与在面板上第一次按下的店相连,x2变为0,是防止与上一次释
//放的点就开始联合
a=e.getClickCount();
if(a==2){
g.drawLine(x2,y2,c,d);
b=true;
x2=0;
}