import java.awt.Graphics;
创新互联公司制作网站网页找三站合一网站制作公司,专注于网页设计,网站设计、成都网站制作,网站设计,企业网站搭建,网站开发,建网站业务,680元做网站,已为数千家服务,创新互联公司网站建设将一如既往的为我们的客户提供最优质的网站建设、网络营销推广服务!
import java.awt.Point;
import java.util.Scanner;import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;public class arrow extends JPanel{
static Point [] point=new Point[8];
static int w,h,d;
public arrow() {
}
public static void main(String[] args) {
InitialPoint();
showView();
}
static void showView()
{
JFrame frame=new JFrame("绘制箭头");
frame.getContentPane().add(new arrow());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
}
static void InitialPoint()
{
Scanner input=new Scanner(System.in);
System.out.println("请你书箭头的宽w值0--500:");
w=input.nextInt();
System.out.println("请你书箭头的高h值0--250:");
h=input.nextInt();
System.out.println("请你书箭头的长度d值0--500:");
d=input.nextInt();
for(int i=0;i8;i++)
point[i]=new Point();
if(w=0w=500h=0h=250d=0d=500d2*h)
{
point[0].x=-d/2;point[0].y=0;
point[2].x=-d/2+h;point[2].y=-w/2;
point[1].x=-d/2+h;point[1].y=w/2;
point[3].x=-d/2;point[3].y=0;
point[4].x=d/2;point[4].y=0;
point[5].x=d/2-h;point[5].y=w/2;
point[6].x=d/2-h;point[6].y=-w/2;
point[7].x=d/2;point[7].y=0;
}
else {
System.out.println( "数据不符合条件");
}
for(int i=0;i8;i++)
{
point[i].x=point[i].x+250;
point[i].y=point[i].y+250;
}
}
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
for(int i=0;i7;i++)
{
g.drawLine(point[i].x,point[i].y , point[i+1].x,point[i+1].y);
}
}
}
用java实现的,你看看。。。
小箭头可以是一个图片 默认是隐藏的 等你隐藏了窗体就把小箭头显示,点击小箭头再显示窗体隐藏小箭头,就这样切来切去嘛
break表示跳出循环了,后面的println永远不会运行所以是无效代码,java对这些无效代码的编译就是报错
/**
* 画带箭头的线
* */
public void paintk(GC g, int x1, int y1, int x2, int y2) {
double H = 10 ; // 箭头高度
double L = 7 ; // 底边的一半
int x3 = 0 ;
int y3 = 0 ;
int x4 = 0 ;
int y4 = 0 ;
double awrad = Math.atan(L / H); // 箭头角度
double arraow_len = Math.sqrt(L * L + H * H); // 箭头的长度
double [] arrXY_1 = rotateVec(x2 - x1, y2 - y1, awrad, true , arraow_len);
double [] arrXY_2 = rotateVec(x2 - x1, y2 - y1, - awrad, true , arraow_len);
double x_3 = x2 - arrXY_1[ 0 ]; // (x3,y3)是第一端点
double y_3 = y2 - arrXY_1[ 1 ];
double x_4 = x2 - arrXY_2[ 0 ]; // (x4,y4)是第二端点
double y_4 = y2 - arrXY_2[ 1 ];
Double X3 = new Double(x_3);
x3 = X3.intValue();
Double Y3 = new Double(y_3);
y3 = Y3.intValue();
Double X4 = new Double(x_4);
x4 = X4.intValue();
Double Y4 = new Double(y_4);
y4 = Y4.intValue();
// g.setColor(SWT.COLOR_WHITE);
// 画线
g.drawLine(x1, y1, x2, y2);
// 画箭头的一半
g.drawLine(x2, y2, x3, y3);
// 画箭头的另一半
g.drawLine(x2, y2, x4, y4);
}
/**
*取得箭头的绘画范围
*/
public double [] rotateVec( int px, int py, double ang, boolean isChLen,
double newLen) {
double mathstr[] = new double [ 2 ];
// 矢量旋转函数,参数含义分别是x分量、y分量、旋转角、是否改变长度、新长度
double vx = px * Math.cos(ang) - py * Math.sin(ang);
double vy = px * Math.sin(ang) + py * Math.cos(ang);
if (isChLen) {
double d = Math.sqrt(vx * vx + vy * vy);
vx = vx / d * newLen;
vy = vy / d * newLen;
mathstr[ 0 ] = vx;
mathstr[ 1 ] = vy;
}
return mathstr;
}