class="p0">总结——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);//让窗体显示出来,这句要放到最后面
?
?
}
?
}? ? ? ?
?