Java图形化界面绘制
界面结构
Java的GUI界面主要由界面程序和事件监听两部分组成。
界面程序
界面程序又分为可视化组件和元素组件
- 可视化组件包括窗体、标签、图片、输入框、按钮等,窗体是其他组件的载体。
- 窗体的初始化:
JFrame jf=new JFrame();
jf.setSize(380,500);//设置大小
jf.setTitle("标题");//添加标题
jf.setLocationRelativeTo(null);//设置位置
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出进程
- 标签初始化
JLabel jlb=new JLabel("账号");
jf.add(jlb)
- 输入框初始化
JTextField jtf = new JTextField();
jf.add(jtf);
- 加载图片
mageIcon image = new ImageIcon("F:\\图片\\1.jpg");
JLabel jla = new JLabel(image);
jf.add(jla);
元素组件包括尺寸、布局管理器等
1.尺寸初始化
Dimension dm = new Dimension(300, 30);
jlb.setPreferredSize(dm2);//窗体以外的组件设置方法
2.布局管理器
FlowLayout flow = new FlowLayout();
jf.setLayout(flow);//设置窗体为流式布局
事件监听
1.监听程序
1.事件源:当前动作所发生的组件
2.确定监听器方法:动作监听器等
3.绑定事件处理类
2.代码实现
ButtonListener listener = new ButtonListener();
jbu.addActionListener(listener);
listener.jt = jtf;
3.事件监听源码
public interface ActionListener extends EventListener {
//Interface与类同级 可以作为引用数据类型(类 数组 接口)【引用数据类型:String 基本数据类型 int char】
// Invoked when an action occurs.
public void actionPerformed(ActionEvent e);
}
public interface EventListener {
}
//ActionListener不能创建对象,因为其中的方法没有方法体,默认为抽象方法。
4.接口使用方式
接口使用方式(监听器也是接口)
关键字: implements 多实现可以实现多个接口
//1、创建一个类 实现这个接口
public class 类名 implements 接口{
//2、需要重写接口中所有抽象方法 ,改分号为大括号
public void actionPerformed(ActionEvent e){
}
例:一个登陆界面设计
import java.awt.Dimension;
import javax.swing.ImageIcon;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
public class Login{
public void initUI() {
//新建窗体对象、设置窗体的尺寸、标题、位置、关闭
JFrame jf=new JFrame();
jf.setSize(380,500);
jf.setTitle("登陆界面");
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置页面布局
FlowLayout flow = new FlowLayout();
jf.setLayout(flow);
//加载指定路径图片
ImageIcon image=new ImageIcon("E:\\1.png");
JLabel jla=new JLabel(image);
jf.add(jla);
//设置账号标签
JLabel jlb=new JLabel("账号");
//新建输入框对象,设置大小
JTextField jtf1 = new JTextField();
Dimension dm1 = new Dimension(300, 30);
jtf1.setPreferredSize(dm1);
//设置账号标签
JLabel jlc=new JLabel("密码");
//新建输入框对象,设置大小
JTextField jtf2 = new JTextField();
Dimension dm2 = new Dimension(300, 30);
jtf2.setPreferredSize(dm2);
//新建登录按钮
JButton jbu=new JButton("登录");
//把标签、输入框、按钮都添加到窗体中
jf.add(jlb);
jf.add(jtf1);
jf.add(jlc);
jf.add(jtf2);
jf.add(jbu);
//设置组件可见
jf.setVisible(true);
//按钮监听器
ButtonListener l=new ButtonListener();
jbu.addActionListener(l);
l.jt=jtf1;
l.jt2=jtf2;
}
public static void main(String[] args){
Login lo=new Login();
lo.initUI();
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class ButtonListener implements ActionListener {
public String name="123";
public String mima="123";
public JTextField jt;
public JTextField jt2;
public void actionPerformed(ActionEvent e) {
String userName=jt.getText();
String password=jt2.getText();
//判断账号密码是否正确
if(name.equals(userName)&&mima.equals(password)) {
String userName=jt.getText();
String password=jt2.getText();
JFrame jf=new JFrame();
jf.setSize(200,200);
jf.setTitle(" ");
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
if(name.equals(userName)&&mima.equals(password)) {
jf.add(new JLabel("登陆成功"));
}
else {
jf.add(new JLabel("登陆失败"));
}
}
}