怎么用java画矩形?并且可以在后续添加直线?还有Graphics.drawPolyline(int[] a,int[] b,int n);的用法。谢谢了

shizao 2008-10-06 12:56:17
怎么用java画矩形?并且可以在后续添加直线?
下面的这个函数用了Graphics.drawPolyline(int[] a,int[] b,int n);方法,
用main()调用时为什么会出错呢?



import java.applet.Applet;
import java.awt.Graphics;

/**
*
* @author Administrator
* 画矩形
*/
public class Grid extends Applet{

Graphics g;
public Grid(){
int[] xPoints={0,700,700,0,0};
int[] yPoints={0,0,700,700,0};
int nPoints=5;

g.drawPolyline(xPoints, yPoints, nPoints);
}

}

...全文
961 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shizao 2008-10-14
  • 打赏
  • 举报
回复
谢谢楼上的了,解答很详细。
ma_liang 2008-10-10
  • 打赏
  • 举报
回复
楼主使用了applet小程序,用main方法调用肯定是有问题的,applet程序是由浏览器来加载运行的。

程序可以这样修改一下:

import java.applet.Applet;
import java.awt.Graphics;

/**
*
* @author Administrator
* 画矩形
*/
public class Grid extends Applet{
int[] xPoints;
int[] yPoints;
int nPoints;
public void init(){
xPoints=new int[]{0,700,700,0,0};
yPoints=new int[]{0,0,700,700,0};
nPoints=5;
}
public void paint(Graphics g){
g.drawPolyline(xPoints, yPoints, nPoints);
}
}

applet程序里画图需要使用Applet类的paint方法。
ocelight 2008-10-10
  • 打赏
  • 举报
回复
你是不是没有传入 Graphics g; 对象报空指针异常啊。
gouliming 2008-10-08
  • 打赏
  • 举报
回复
final int nPoints = 4;
g.drawPolygon(xPoints, yPointts,nPoints);
程序这样修改后就应该没问题了.
周公 2008-10-06
  • 打赏
  • 举报
回复
g.drawRectanle(int x,int y,int width,int height)
这个不行吗?
基于SpringMVC annotation 的图形验证码 主要是controller的写法 实现前台验证码的显示 和刷新 验证功能相信大家都能写出来 访问 http://localhost:8080/SpringMVC_annotation_volidate/login jsp页面关键代码 function changeValidateCode(obj){ var timeNow = new Date().getTime(); obj.src="checkCode/service.do?time="+timeNow; } .. .. .. .. Controller package qianyan.mofi.controller; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/checkCode") public class CheckCodeController extends HttpServlet { public CheckCodeController() { super(); } public void destroy() { super.destroy(); } public void init() throws ServletException { super.init(); } public Color getRandColor(int s, int e) { Random random = new Random(); if (s > 255) s = 255; if (e > 255) e = 255; int r = s + random.nextInt(e - s); int g = s + random.nextInt(e - s); int b = s + random.nextInt(e - s); return new Color(r, g, b); } @RequestMapping("service.do") public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 禁止缓存 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Expires", 0); // 指定生成的响应是图片 response.setContentType("image/jpeg"); int width = 200; int height = 60; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 创建BufferedImage类的对象 Graphics g = image.getGraphics(); // 创建Graphics类的对象 Graphics2D g2d = (Graphics2D) g; // 通过Graphics类的对象创建一个Graphics2D类的对象 Random random = new Random(); // 实例化一个Random对象 Font mFont = new Font("华文宋体", Font.BOLD, 30); // 通过Font构造字体 g.setColor(getRandColor(200, 250)); // 改变图形的当前颜色为随机生成的颜色 g.fillRect(0, 0, width, height); // 绘制一个填色矩形 // 一条折线 BasicStroke bs = new BasicStroke(2f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); // 创建一个供笔选择线条粗细的对象 g2d.setStroke(bs); // 改变线条的粗细 g.setColor(Color.DARK_GRAY); // 设置当前颜色为预定义颜色中的深灰色 int[] xPoints = new int[3]; int[] yPoints = new int[3]; for (int j = 0; j < 3; j++) { xPoints[j] = random.nextInt(width - 1); yPoints[j] = random.nextInt(height - 1); } g.drawPolyline(xPoints, yPoints, 3); // 生成并输出随机的验证文字 g.setFont(mFont); String sRand = ""; int itmp = 0; for (int i = 0; i 1.1f) scaleSize = 1f; trans.scale(scaleSize, scaleSize); g2d_word.setTransform(trans); /************************/ g.drawString(String.valueOf(ctmp), 30 * i + 40, 16); } // 将生成的验证码保存到Session中 HttpSession session = request.getSession(true); session.setAttribute("randCheckCode", sRand); g.dispose(); ImageIO.write(image, "JPEG", response.getOutputStream()); } }

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧