总结——Swing界面开发
1.常用的组件
容器组件:能装载容器组件或者元素组件。
javax.swing.JFrame窗体容器组件顶级容器
元素组件:只能显示文字或者图片。
javax.swing.JLabel标签元素组件显示文字,图片
javax.swing.JTextField文本输入框元素组件接收输入,直接显示
javax.swing.JButton按钮组件显示文字,图片,可以点击。
布局组件:主要应用在容器组件中,主要对容器上添加的组件进行排列显示。
java.awt.FlowLayout流式布局组件word文档。
2.实现一个简单的登录界面
1.新建一个Login类,在类中定义主函数和初始化界面的方法。
2.在初始化界面的方法中创建JFrame类的对象。
3.设置JFrame对象的属性值(大小,标题,位置,关闭,可见,布局)。
4.创建元素组件对象,将创建好的对象添加到JFrame容器上。
5.在主函数中创建Login类的对象,然后调用初始化界面的方法。
3.练习
1.实现登录界面
2.实现计算器界面
4.接口
定义接口的关键字:interface
public interface 接口名 extends 接口,... {
//常量
public static final 数据类型 常量名 = 值;
static final 数据类型 常量名 = 值;
数据类型 常量名 = 值;
//抽象方法
public abstract 返回值类型 方法名(数据类型 参数名,...);
public 返回值类型 方法名(数据类型 参数名,...);
abstract 返回值类型 方法名(数据类型 参数名,...);
返回值类型 方法名(数据类型 参数名,...);
}
注意:1.接口中只有一种访问修饰符public 。
2.抽象方法定义时一定要以;结尾。
3.接口不能创建对象。
4.接口可以继承一个或者多个接口
实现接口的关键字:implements
格式:
public class 类 extends 类 implements 接口,... {
//定义属性
//定义构造方法,普通方法
}
当类实现接口后,类必须要实现(重写)接口中所有的抽象方法,如果没有实现(重写)接口
中的抽象方法,则程序编译报错。
丰富类的继承。
接口和类的区别:
5.事件
Qie ting风云:吴彦祖(接收到画面和声音) 刘青云(安装了qie ting器)
事件源
只能是Swing的图形界面组件。
动作发生在某一个组件上,那么该组件就会成为一个事件源对象。
<!--[if !supportLists]-->1.<!--[endif]-->开发登陆界面
public class JFrameTest{
public static void main(String args[]){
JFrameTest tf=new JFrameTest();
tf.showFrame();
}
//显示一个加有多个组件的窗体界面
public void showFrame(){
//创建一个窗体对象
JFrame frame=new JFrame();
frame.setTitle("第一个登陆界面");//设置标题
//创建一个标签元素
JLabel la_name=new JLabel("名字");
//创建一个指定长度的文本
JTextField jta_name=new JTextField(4);
//创建一个按钮;
JButton bu_login=new JButton("登陆");
//将这三个组件加到窗体上
frame.add(la_name);
frame.add(jta_name);
frame.add(bu_login);
frame.setSize(200,200);//设置窗体大小
frame.setVisible(true);//让窗体显示出来,这句要放到最后面
}
}
效果图:
<!--[if !supportLists]-->2.<!--[endif]-->使用布局管理器管理组件的摆放
布局方法:FlowLayout()流体布局,自动式,不可控
Layout(null)空布局 可以设置位置
orderLayout 边框布局
public class Flowbuju {
public static void main(String[] args) {
Flowbuju Fb = new Flowbuju();
Fb.showFrame();
}
public void showFrame(){
//构造一个窗体对象
JFrame jf = new JFrame();
//设置标题
jf.setTitle("第一个界面程序");
//设置大小
jf.setSize(400, 200);
//设置位置
jf.setLocationRelativeTo(null);
//放置元素组件前,要创建并给窗体加上布局管理器:
//创建流失布局管理器对象:
FlowLayout f1 = new FlowLayout();
jf.setLayout(f1);
//创建一个标签元素:
JLabel ja = new JLabel("账号");
//创建一个指定长度的文本
JTextField jt = new JTextField(4);
//创建一个标签元素:
JLabel ja2 = new JLabel("密码");
//创建一个指定长度的文本
JTextField jt2 = new JTextField(4);
//创建一个按钮
JButton jb = new JButton("登陆");
jf.add(ja);
jf.add(jt);
jf.add(ja2);
jf.add(jt2);
jf.add(jb);
jf.setDefaultCloseOperation(3);//窗体关闭时程序退出
jf.setVisible(true);//让窗体显示出来,这句要放到最后面
LoginListener ll = new LoginListener();
jb.addActionListener(ll);
}
}
空布局示例
public class Login {
public static void main(String[] args) {
Login Fb = new Login();
Fb.showFrame();
}
public void showFrame(){
//构造一个窗体对象
JFrame jf = new JFrame();
//设置标题
jf.setTitle("QQ登陆界面");
//设置大小
jf.setSize(430, 330);
//设置位置
jf.setLocationRelativeTo(null);
//创建流式布局
jf.setLayout(null);
//添加图片背景
JLabel image = new JLabel(new ImageIcon("Picture/bj.jpg"));
image.setBounds(0, 0, 430, 330);
jf.add(image);
//创建一个标签元素:
JLabel ja = new JLabel("账号");
//创建一个指定长度的文本
JTextField jt = new JTextField("账号");
jt.setBounds(120, 193, 193,26);
image.add(ja);
image.add(jt);
//创建一个标签元素:
JLabel ja2 = new JLabel("密码");
//创建一个指定长度的文本
JTextField jt2 = new JTextField("密码");
jt2.setBounds(120, 221, 193,26);
//将标签加到图片上
/*
* 加到jf上时不能显示
* eg:
*
* jf.add(ja2);
*
*/
image.add(ja2);
image.add(jt2);
//创建一个按钮
JButton jb = new JButton("登陆");
jb.setBounds(120,252,193,30);
image.add(jb);
//设置大小不可改变
jf.setResizable(false);
jf.setDefaultCloseOperation(3);//窗体关闭时程序退出
jf.setVisible(true);//让窗体显示出来,这句要放到最后面
//添加监听器
LoginListener ll = new LoginListener();
jb.addActionListener(ll);
}
}
监听器
public class LoginListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JFrame jf = new JFrame();
//设置标题
jf.setTitle("QQ");
//设置大小
jf.setSize(280, 668);
//设置大小不可改变
jf.setResizable(false);
jf.setLocationRelativeTo(null);
//放置元素组件前,要创建并给窗体加上布局管理器:
//创建流失布局管理器对象:
java.awt.FlowLayout f1 = new java.awt.FlowLayout();
jf.setLayout(f1);
//创建一个标签元素:
JLabel ja = new JLabel("账号");
//创建一个指定长度的文本
JTextField jt = new JTextField(e.getActionCommand());
jt.setPreferredSize(new Dimension (50,30));
//创建一个标签元素:
JLabel ja2 = new JLabel("密码");
//创建一个指定长度的文本
JTextField jt2 = new JTextField(e.getActionCommand());
jt2.setPreferredSize(new Dimension(50, 30));
jf.add(ja);
jf.add(jt);
jf.add(ja2);
jf.add(jt2);
jf.setDefaultCloseOperation(3);//窗体关闭时程序退出
jf.setVisible(true);//让窗体显示出来,这句要放到最后面
}