您现在的位置是:主页 > news > 网站建设图片拍摄价格/精准客源
网站建设图片拍摄价格/精准客源
admin2025/6/5 16:11:05【news】
简介网站建设图片拍摄价格,精准客源,做愛表情网站,wordpress 历史我们很经常会遇到需要输入验证码的情况,那么,验证码到底是怎么生成的呢? 其实这是利用java的画板做的,需要一些随机数,然后画到画板上面。 可以使用JPanel的paint,也可以使用Canvas的paint 来实现。 但通…
网站建设图片拍摄价格,精准客源,做愛表情网站,wordpress 历史我们很经常会遇到需要输入验证码的情况,那么,验证码到底是怎么生成的呢?
其实这是利用java的画板做的,需要一些随机数,然后画到画板上面。
可以使用JPanel的paint,也可以使用Canvas的paint 来实现。
但通…
下面是Canvas的实现(部分代码):
我们很经常会遇到需要输入验证码的情况,那么,验证码到底是怎么生成的呢?
其实这是利用java的画板做的,需要一些随机数,然后画到画板上面。
可以使用JPanel的paint,也可以使用Canvas的paint 来实现。
但通常都是使用JPanel来实现,因为JPanel是Swing包的而且效率比较高。
下面分别展现一下这两种实现方式:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class IDCode extends JFrame {private static final long serialVersionUID = 1L;public static void main(String[] args) {new IDCode();}public IDCode() {super("验证码生成");setBounds(300, 100, 300, 150);setDefaultCloseOperation(EXIT_ON_CLOSE);setResizable(false);JPanel panel = new JPanel();panel.setLayout(new BorderLayout());MyJPanel myJPanel = new MyJPanel();panel.add(myJPanel,BorderLayout.CENTER);// 默认加在CenterJButton button = new JButton("看不清");panel.add(button,BorderLayout.SOUTH);button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {repaint();}});getContentPane().add(panel);setVisible(true);}
}class MyJPanel extends JPanel {private static final long serialVersionUID = 1L;private Random random = new Random(System.currentTimeMillis());@Overridepublic void paint(Graphics g) {//所有的参数都需要根据实际情况来设定
g.setColor(Color.white);g.fillRect(85, 20, 120, 50);//画数字g.setFont(new Font("黑体", Font.BOLD, 35));for (int i = 0; i < 5; i++) {g.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)));g.drawString("" + random.nextInt(10), 95 + i * 19, 60 + random.nextInt(10));}//画干扰线int count = 0;while(count < 5){int x1 = random.nextInt(120)+85;int y1 = random.nextInt(50)+20;int x2 = random.nextInt(120)+85;int y2 = random.nextInt(50)+20;if(Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))>80){g.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)));g.drawLine(x1, y1, x2, y2);count++;}}}
}
下面是Canvas的实现(部分代码):
class MyCanvas extends Canvas {private static final long serialVersionUID = 1L;private Random r = new Random(System.currentTimeMillis());@Overridepublic void paint(Graphics g) {// setBackground(Color.white);g.setColor(Color.white);g.fillRect(10, 10, 100, 50);g.setFont(new Font("aa", Font.BOLD, 20));for (int i = 0; i < 5; i++) {g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));int a = r.nextInt(10);int n = r.nextInt(10);g.drawString("" + a, 50 + i * 10, 45 + n);}int i = 0;while (i < 5) {g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));int x1 = r.nextInt(100);int y1 = r.nextInt(60);int x2 = r.nextInt(100);int y2 = r.nextInt(60);if (Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) < 50) {continue;}g.drawLine(x1, y1, x2, y2);i++;}}
}