博学谷——让IT教学更简单,让IT学习更有效
二、案例实现
import java.awt.*; import java.awt.event.*; import java.util.Random; public class Example11 { }
class MyPanel extends Panel {
public void paint(Graphics g) {
int width = 200; // 定义验证码图片的宽度 int height = 60; // 定义验证码图片的高度
g.setColor(Color.LIGHT_GRAY); // 设置上下文颜色 g.fillRect(0, 0, width, height); // 填充验证码背景 g.setColor(Color.blue); // 设置上下文颜色 g.drawRect(0, 0, width - 1, height - 1); // 绘制边框 // 绘制干扰点
Random r = new Random();
for (int i = 0; i < 100; i++) { }
g.setFont(new Font(\黑体\设置验证码字体 g.setColor(Color.red); // 设置验证码颜色 // 产生随机验证码
char[] chars = (\
+ \
StringBuilder sb = new StringBuilder(); for (int i = 0; i < 4; i++) { }
g.drawString(sb.toString(), 20, 30); // 写入验证码
21
int pos = r.nextInt(chars.length); char c = chars[pos]; sb.append(c + \
int x = r.nextInt(width) - 2; int y = r.nextInt(height) - 2; g.drawOval(x, y, 2, 2);
public static void main(String[] args) { }
final Frame frame = new Frame(\验证码\创建Frame对象 final Panel panel = new MyPanel(); // 创建Canvas对象 frame.add(panel);
frame.setSize(300, 150); // 将Frame窗口居中
frame.setLocationRelativeTo(null); frame.setVisible(true);
博学谷——让IT教学更简单,让IT学习更有效
}
}
运行结果如图9-15所示。
图9-15 运行结果
三、案例总结
Graphics类中提供了各种绘制图形的方法,使用Graphics类的方法就可以完成在组件上绘制图形。下表列出了Graphic类中常用的方法。
方法声明 void setColor(Color c) void setFont(Font f) void drawLine(int x1,int y1, int x2,int y2) 方法描述 将此图形上下文的当前颜色设置为指定颜色 将此图形上下文的字体设置为指定字体 以(x1,y1)和(x2,y2)为端点绘制一条线段 void drawRect(int x, int y, int width, 绘制指定矩形的边框。矩形的左边缘和右边缘分别位于 x 和 int height) x + width。上边缘和下边缘分别位于 y 和 y + height 绘制椭圆的边框。得到一个圆或椭圆,它刚好能放入由x、y、void drawOval(int x, int y, int width, width 和 height 参数指定的矩形中。椭圆覆盖区域的宽度为 int height) width + 1 像素,高度为 height + 1 像素 void fillRect (int x,int y, int width, 用当前颜色于填充指定的矩形。该矩形左边缘和右边缘分别位于 int height) x 和 x + width - 1。上边缘和下边缘分别位于 y 和 y + height – 1 void fillOval(int x,int y,int width, int height) void drawString (String str, int x, int y) 用当前颜色填充外接指定矩形框的椭圆 使用此图形上下文的当前字体和颜色绘制指定的文本str。最左侧字符左下角位于 (x, y) 坐标 案例9-12 Jdialog类 一、案例描述
1、 考核知识点
编号:00109015 名称:Jdialog类
2、 练习目标
? 掌握Jdialog类的使用
22
博学谷——让IT教学更简单,让IT学习更有效
3、 需求分析
JDialog对话框可分为两种:模态对话框和非模态对话框。所谓模态对话框是指用户需要等到处理完对话框后才能继续与其它窗口交互,为了方便初学者掌握Jdialog类的使用,本案例将演示JDialog对话框中的模态对话框的使用。
4、 设计思路(实现原理)
1)编写类Example12,创建一个名为“模式对话框测试”的窗体。 2)写一个按钮,点击按钮弹出模式对话框。
3)编写Example12类,在类的main()方法中调用Inner类中的变量和方法。
4)定义一个JDialog对话框,在对话框中定义一个按钮,点击按钮关闭模式对话框
二、案例实现
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Example12 {
public static void main(String[] args) {
JButton btn = new JButton(\模式对话框\JFrame f = new JFrame(\模式对话框测试\f.setSize(300, 250); f.setLocation(300, 200);
f.setLayout(new FlowLayout()); // 为内容面板设置布局管理器 // 在Container对象上添加按钮 f.add(btn);
// 设置点击关闭按钮默认关闭窗口
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true);
final JLabel label = new JLabel();
final JDialog dialog = new JDialog(f, \模式对话框\定义一个JDialog对话框 dialog.setSize(220, 150); // 设置对话框大小 dialog.setLocation(350, 250); // 设置对话框位置 dialog.setLayout(new FlowLayout()); // 设置布局管理器 final JButton btn2 = new JButton(\确定\创建按钮对象 dialog.add(btn2); // 在对话框的内容面板添加按钮 // 为\模态对话框\按钮添加点击事件
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 设置对话框为模态 dialog.setModal(true);
// 如果JDialog窗口中没有添加了JLabel标签,就把JLabel标签加上 if (dialog.getComponents().length == 1) { }
23
dialog.add(label);
博学谷——让IT教学更简单,让IT学习更有效
}
}
}
// 否则修改标签的内容
label.setText(\模式对话框,点击确定按钮关闭\// 显示对话框
dialog.setVisible(true);
});
运行结果如图9-16所示。
图9-16 运行结果
三、案例总结
对话框是模态或者非模态,可以在创建Dialog对象时为构造方法传入参数来设置,也可以在创建JDialog对象后调用它的setModal()方法来进行设置,JDialog常见的构造方法如下表所示。 方法声明 JDialog(Frame owner) JDialog(Frame owner,String title) 功能描述 构造方法,用来创建一个非模态的对话框,owner为对话框所有者(顶级窗口JFrame) 构造方法,创建一个具有指定标题的非模态对话框 JDialog(Frame owner,boolean modal) 创建一个有指定模式的无标题对话框 案例9-13 JFrame组件 一、案例描述
1、 考核知识点
编号:00109016 名称:JFrame组件
2、 练习目标
? 掌握JFrame组件的使用
3、 需求分析
在Swing组件中,最常见的一个就是JFrame,它是一个独立存在的顶级窗口,不能放置在其
24
博学谷——让IT教学更简单,让IT学习更有效
它容器之中,JFrame支持通用窗口所有的基本功能,例如窗口最小化、设定窗口大小等等。为了让初学者掌握JFrame组件的使用,本案例将演示JFrame的效果。
4、 设计思路(实现原理)
1)编写Example13类继承JFrame类。 2)创建一个title为“JFrame”的窗体。
3)在窗体中创建一个按钮,使用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法,设置点击按钮关闭窗口的操作。
二、案例实现
1、定义Example13类,代码如下所示:
import java.awt.FlowLayout; import java.awt.event.*; import javax.swing.*;
public class Example13 extends JFrame{ public Example15(){ this.setTitle(\ this.setSize(300, 200); // 定义一个按钮组件
JButton bt = new JButton(\关闭窗口\ // 设置流式布局管理器
this.setLayout(new FlowLayout()); // 添加按钮组件 this.add(bt);
// 设置点击关闭按钮时的默认操作
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); }
public static void main(String[] args) { }
}
new Example13 ();
运行结果如图9-17所示:
图9-17 运行结果
25