JAVA简易绘图板中监听器的实现

JAVA简易绘图板

窗体的绘制

图形化程序:
1.javax.swing (可视化组件类) ——窗体上的组件
2.java.awt (元素组件类)——给窗体上组件具体定义

import javax.swing.*;
import java.awt.*;

public class Login {
    public void showUI() {
    	//定义窗体
        JFrame jf = new JFrame();
        jf.setSize(400, 500);
        jf.setTitle("登录界面");
        jf.setLocationRelativeTo(null);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
		//定义流式布局
        java.awt.FlowLayout flow = new java.awt.FlowLayout();
        jf.setLayout(flow);
        
		//定义窗体上的各个组件
		//图片(需要再定义一个标签存放图片)
		javax.swing.ImageIcon image = new javax.swing.ImageIcon("F:\\图片\\1.jpg");
		javax.swing.JLabel jla = new javax.swing.JLabel(image);
		jf.add(jla);
		
        //标签
        JLabel user = new JLabel("账号:");
        jf.add(user);
        
        //文本框,Dimension类(除了JFrame)其它组件设置大小都是该方法
        JTextField jtf = new JTextField();
        java.awt.Dimension dm = new java.awt.Dimension(340, 30);
        jtf.setPreferredSize(dm);
        jf.add(jtf);
        
        //按钮
        JButton jbu = new JButton("登录");
        jf.add(jbu);

        jf.setVisible(true);
    }
}

监听器的设置

java.awt.event这个包中。
监听器作为接口,得继承在类之下,故定义DrawListener类继承MouseListener, ActionListener两个类。
如何将事件源和动作监听器绑定?
函数:addActionListener(对象)
如果是按钮,监听鼠标点击:

//窗体类中
DrawMouse mouse = new DrawMouse();

JButton jbu = new JButton(name[i]);
jf.add(jbu);
jbu.addActionListener(mouse);

//事件处理类中
public void actionPerformed(ActionEvent e) {
//返回此按钮激发的动作事件的命令名称。如果命令名称为 null(默认),则此方法返回按钮的标签。
	str = e.getActionCommand();
}
//str代表了不同按钮,可以在选择语句中执行不同的命令
public void mouseReleased(MouseEvent e) {
	x2 = e.getX();
	y2 = e.getY();
	if (str.equals("直线")) {
		g.drawLine(x1, y1, x2, y2);
	}
	if (str.equals("矩形")) {
		g.drawRect(Math.min(x1, x2), Math.min(y1, y2),
			Math.abs(x1 - x2), Math.abs(y1 - y2));
	}
	if (str.equals("圆")) {
		g.drawOval(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2 - x1), Math.abs(y2 - y1));
	}
}

如果是文本框,按钮点击时对文本框的内容做出处理

//窗体类
ButtonListener but = new ButtonListener();
but.setJtf(jtf);
but.setJtf2(jtf2);
jbu.addActionListener(but);

//事件处理类
//在动作发生后,才读入两个文本框内的值(提前将值读入是错误的!)
//想要实时更新文本框的储存值,只要事件处理类中也存储了窗体类中的文本框对象,所以窗体类和事件处理类要一一对应才行
public JTextField jtf;
public JTextField jtf2;

public void setJtf(JTextField j) {
	jtf = j;
}
public void setJtf2(JTextField j) {
	jtf2 = j;
}

public void actionPerformed(ActionEvent e) {
	//System.out.println("jtf.getText()  = " + jtf.getText());
	if (jtf.getText().equals("sjp") && jtf2.getText().equals("123456")) {
	//System.out.println("ok");
		OK.showUI();
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值