1、创建一个登陆窗口:
步骤: 1.定义一个QQFrame,让该类继承自JFrame。
2.在QQFrame类中定义主函数和初始化界面的方法。
3.在主函数中实例化QQFrame类的对象,调用初始化界面的方法。
4.在初始化界面的方法中,设置窗体的属性值(标题,大小,位置、可见,...)
5.创建容器或者元素控件添加到JFrame上。
2、实现点击登陆按钮时,弹出一个“创意画板”的界面:
创意画板界面的设置与上大体相同,不再赘述
首先需要创建QQListener( ActionListener接口)的对象再给事件源jbu添加动作监听器方法。
完成这步需要建一个QQListener类实现ActionListener接口,并重写接口中的抽象方法。
代码:
public class QQListener implements ActionListener{
//重写接口中的抽象方法(事件处理方法)
public void actionPerformed(ActionEvent e) {
System.out.println("您点击了"+e.getActionCommand()+"按钮");
//创建QQ的对象
QQ qq=new QQ();
//调用画板方法
qq.DrawBorder();
}
}
注:实现接口的关键字:implements
格式:
public class 类 (extends 类) implements 接口 (先继承再实现){
//定义属性
//定义构造方法 普通方法
当类实现接口后,必须实现(重写)接口中的所有抽象方法,否则报错
}
3、实现在创意画板中单击鼠标画出椭圆的操作:
在这一步需要建一个DrawListener类实现MouseListener接口并实现其中所有的
抽象方法,但要实现画图操作还得在QQ类中的DrawBorder窗体方法(事件源)
里获取窗体的Graphics对象,由于抽象类中不能new对象,只能取,并且需要在窗体可见
之后获取其画笔对象 所以代码为:Graphics g=this.getGraphics();
并创建MouseListener的子类DrawListener的对象 给事件源添加鼠标监听器方法:
DrawListener l=new DrawListener(g);
this.addMouseListener(l);
以下是DrawListener类的代码:
public class DrawListener implements MouseListener{
//声明一个Graphics类型的对象属性
private Graphics g;
//构造方法 从QQ传过来的画笔对象
public DrawListener(Graphics g){
this.g=g;
}
public void mouseClicked(MouseEvent e) {
int x;
int y;
x=e.getX();
y=e.getY();
//g.drawRect(x, y, 150, 150);
g.drawOval(x, y, 120, 150);
g.drawArc(x+20, y+30, 50, 50, 30, 30);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}
只有组件才能成为事件源对象即动作响应的位置。
以下是我的登陆窗口和创意画板窗口的代码:
//1.定义一个QQFrame,让该类继承自JFrame。
public class QQ extends JFrame{
//2.在QQFrame类中定义主函数和初始化界面的方法。
//程序入口
public static void main(String[] args) {
//3.在主函数中实例化QQFrame类的对象,调用初始化界面的方法。
QQ qq=new QQ();
//调用对象的方法
qq.initUI();
}
//创建一个窗体界面的方法
public void initUI(){
//4.在初始化界面的方法中,设置窗体的属性值(标题,大小,位置,可见,...)
//创建流式布局对象!!!
FlowLayout fl=new FlowLayout();
//加到界面上
this.setLayout(fl);
this.setTitle("登录");//设置标题
this.setSize(300, 200);//设置大小
this.setLocationRelativeTo(null);//居中
//5.创建容器或者元素控件添加到JFrame上。
//添加标签:账号
javax.swing.JLabel jlb1=new javax.swing.JLabel("账号");
this.add(jlb1);
//输入框
JTextField jt=new JTextField(20);
this.add(jt);
//添加标签:密码
javax.swing.JLabel jlb2=new javax.swing.JLabel("密码");
this.add(jlb2);
//输入框
JTextField jt1=new JTextField(20);
this.add(jt1);
//添加按钮:登录
JButton jbu=new JButton("登录");
this.add(jbu);
this.setVisible(true);//置于最后 让窗体显现
this.setDefaultCloseOperation(3);//关闭窗体时 退出程序
//创建QQListener( ActionListener接口)的对象
QQListener ql=new QQListener();
//给事件源jbu添加动作监听器方法
jbu.addActionListener(ql);
}
//创意画板
public void DrawBorder(){
this.setTitle("创意画板");
this.setSize(800, 800);
this.setLocationRelativeTo(null);//居中
this.setVisible(true);
//获取窗体上的Graphics对象 抽象类中不能new对象 只能取
Graphics g=this.getGraphics();
//创建MouseListener接口的子类DrawListener 的对象
DrawListener l=new DrawListener(g);
//给事件源添加鼠标监听器方法
this.addMouseListener(l);
}
}
至此可实现:程序运行出现一个登陆窗口,点击登陆按钮出现一个创意画板窗口,在创意画板上能够画圆。
梣梓
2014、09、25