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();
}
}