黑马程序员技术交流社区

标题: 为什么这里面会报错,方老师的javaweb的验证码编写 [打印本页]

作者: 李思静    时间: 2012-7-20 07:41
标题: 为什么这里面会报错,方老师的javaweb的验证码编写
我是按照方老师的步骤一行行敲的,为什么会报错[code]package com.sijing;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
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;

public class ResponseDemo4 extends HttpServlet {

QQ拼音截图未命名.png (48.02 KB, 下载次数: 49)

昨晚找错误到一点钟,也没找到错误啊,这个图是方老师的代码,是没有问题的,有问题的是我的代码,第49行提 ...

昨晚找错误到一点钟,也没找到错误啊,这个图是方老师的代码,是没有问题的,有问题的是我的代码,第49行提 ...

作者: 李思静    时间: 2012-7-20 07:49
刚才代码没有贴全,我重新贴一下
  1. public class ResponseDemo4 extends HttpServlet {
  2.         public static final int WIDTH=120;
  3.         public static final int HEIGHT=25;
  4.        

  5.         public void doGet(HttpServletRequest request, HttpServletResponse response)
  6.                         throws ServletException, IOException {
  7.                         BufferedImage image=new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
  8.                        
  9.                         Graphics g=image.getGraphics();
  10.                        
  11.                         setBackGround(g);
  12.                        
  13.                         setBorder(g);
  14.                        
  15.                         drawRandomLine(g);
  16.                        
  17.                        
  18.                         drawRandomNum(Graphics g);
  19.                        
  20.                         ImageIO.write(image, "jpg", response.getOutputStream());

  21.         }

  22.         private void drawRandomNum(Graphics g) {
  23.                 g.setColor(Color.RED);
  24.                 g.setFont(new Font("宋体",Font.BOLD,20));
  25.                 String base="\u7684\u4e00\u4e86\u6211";
  26.                 int x=5;
  27.                 for(int i=0;i<4;i++){
  28.                         int degree=new Random().nextInt();
  29.                         String ch=base.charAt(i)+"";
  30.                          g.rotate(degree*Math.PI/180,x,20);
  31.                         g.drawString(ch, x, 20);
  32.                         g.rotate(-degree*Math.PI/180,x,20);
  33.                         x+=30;
  34.                 }
  35.                
  36.         }

  37.         private void drawRandomLine(Graphics g) {
  38.                 g.setColor(Color.GREEN);
  39.                
  40.                 for(int i=0;i<5;i++){
  41.                         int x1=new Random().nextInt(WIDTH);
  42.                         int y1=new Random().nextInt(HEIGHT);
  43.                        
  44.                        
  45.                         int x2=new Random().nextInt(WIDTH);
  46.                         int y2=new Random().nextInt(HEIGHT);
  47.                         g.drawLine(x1, y1, x2, y2);

  48.                 }
  49.                
  50.         }

  51.         private void setBorder(Graphics g) {
  52.                 g.setColor(Color.WHITE);
  53.                 g.fillRect(1, 1, WIDTH-2, HEIGHT-2);
  54.                
  55.         }

  56.         private void setBackGround(Graphics g) {
  57.                 g.setColor(Color.WHITE);
  58.                 g.fillRect(0, 0, WIDTH, HEIGHT);
  59.                
  60.         }

  61.         public void doPost(HttpServletRequest request, HttpServletResponse response)
  62.                         throws ServletException, IOException {

  63.        
  64.         }

  65. }
复制代码

作者: 李思静    时间: 2012-7-20 07:49
上面就是代码和方老师的视频截图,求指教,万分感谢,昨晚找了一个多小时没找出来
作者: 温少邦    时间: 2012-7-20 09:54
rotate方法只有Graphics2D才有
所以要把
private void drawRandomNum(Graphics g)
改成
private void drawRandomNum(Graphics2D g)
并且在调用drawRandomNum时将g强制转换为Graphics2D
作者: 李思静    时间: 2012-7-20 10:16
温少邦 发表于 2012-7-20 09:54
rotate方法只有Graphics2D才有
所以要把
private void drawRandomNum(Graphics g)

试了试,果然是这个问题 ,谢了,兄弟





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2