互联网就像一片大海,它会淹死那些不会游泳的人,因此筛选信息的能力是非常重要的。
如果今天是我生命中最后一天,我还会去做今天要做的事情吗?我们需要时刻提醒自己的生命行将终结。这是帮助我们为生命中的重要选择做出决定的最好办法。
— 高大可
记住,你即将死去! — Steve jobs
一、图形用户界面的类主要在哪个包中?
java.awt 重量级组件 依赖与具体的操作系统
javax.swing 轻量级组件 真正实现了跨平台
二、AWT包主要包含的四部分是什么?
容器: 用于放置基本组件,其本身也是一种组件
基本组件: 包括按钮、标签、文本框等,是图形界面的基本组成元素
布局管理器: 对容器中放置的组件进行布局管理
事件处理: 使得用户能够通过图形界面与系统交互,又称加监听器
三、容器部分
JFrame 窗体类 默认的是边框布局(BorderLayout)
代码演示如下:
import java.awt.Color;
import javax.swing.JFrame;
publicclass Test {
publicstaticvoid main(String[] args) {
JFrame f = new JFrame("MyFrame");//创建窗口对象命名为"MyFrame"
f.setSize(200,200);//设置Frame的大小
f.setResizable(false);//设置为大小不可调
f.setBackground(Color.GRAY);//设置背景色
f.setLocationRelativeTo(null);//设置窗口出现的默认位置
f.setVisible(true);//设置Frame为可见
}
}
效果如下
JPanel 面板类 默认的是流式布局(FlowLayout)
代码演示如下:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Panel;
import javax.swing.JFrame;
publicclass Test {
publicstaticvoid main(String[] args) {
JFrame f = new JFrame("MyFrame");//创建窗口对象命名为"MyFrame"
f.setSize(200,200);//设置Frame的大小
f.setResizable(false);//设置为大小不可调
f.setBackground(Color.GRAY);//设置背景色
f.setLocationRelativeTo(null);//设置窗口出现的默认位置
//添加几个面板,并设置背景色
Panel p1 = new Panel();//设置第一个Panel
p1.setBackground(Color.red);//设置第一个Panel的背景色
Panel p2 = new Panel();//设置第二个Panel
p2.setBackground(Color.yellow);//设置第二个Panel的背景色
Panel p3 = new Panel();//设置第三个Panel
p3.setBackground(Color.blue);//设置第三个Panel的背景色
//将Panel添加到Frame中
f.add(p1, BorderLayout.NORTH);//将第一个Panle加入Frame中
f.add(p2, BorderLayout.CENTER);//将第二个Panle加入Frame中
f.add(p3, BorderLayout.SOUTH);//将第三个Panle加入Frame中
f.setVisible(true);//设置Frame为可见
}
}
输出的结果是:
每一个容器都可以设置布局,但是一个容器只能设置一个布局。
四、布局管理器
FlowLayout 流式布局类
流式布局是Panel类的默认布局,用于将组件按照从左到右、从上到下的顺序进行布局。组件间默认的间距是5个像素点,默认的对齐方式是居中。
BorderLayout 边框布局类
边框布局是JFrame类的默认布局,此布局管理器将容器划分为东(East)、西(West)、南(South)、北(North)、中(Center)五个区域。
GridLayout 网格布局类
网格布局管理器将容器划分为由行和列组成的多个网格,每个网格放一个组件。采用网格布局,在容器中按照从左到右、从上到下的顺序往网格中逐个添加组件。
这些布局是java.awt包下的类
五、独立组件
JLabel 标签类
JTextField 文本输入框类
JButton 按钮类
JPasswordField 密码输入框类
JComboBox 下拉列表框
JCheckBox 复选框
JList 列表选项
代码演示如下:
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
publicclass Test {
publicstaticvoid main(String[] args) {
JFrame f = new JFrame("MyFrame");//创建窗口对象命名为"MyFrame"
f.setSize(200,100);//设置Frame的大小
f.setResizable(false);//设置为大小不可调
f.setBackground(Color.GRAY);//设置背景色
f.setLocationRelativeTo(null);//设置窗口出现的默认位置
f.setLayout(new GridLayout(1,3));//设置窗体布局为网格布局
JLabel lb = new JLabel("性别:");//添加性别标签
lb.setAlignmentY(JLabel.RIGHT_ALIGNMENT);
//设置分组以实现单选功能
CheckboxGroup cbg = new CheckboxGroup();
//创建JCheckbox组件
Checkbox cb1 = new Checkbox("男",true,cbg);
Checkbox cb2 = new Checkbox("女",false,cbg);
//在Frame中加组件
f.add(lb);
f.add(cb1);
f.add(cb2);
f.setVisible(true);//设置窗体可见
}
}
运行结果是:
这些这些组件都继承自Component类。
六、事件监听机制
一个简单的事件处理流程表述为:在一个按钮对象上点击鼠标时,系统即发出事件通知,这个事件会被做为一个EventObject(事件对象)通知给对这个事件有兴趣的处理对象EventListener(事件监听器),监听器再对该事件进行处理的命令。
一个事件处理流程由三部分组成:
事件源:即焦点所在的组件,如窗口、按钮、复选框等
事件:用户对事件源的各种操作动作
事件处理器:用于接受并处理事件的方法
代码演示如下:
import java.awt.FlowLayout;
import javax.swing.JFrame;
publicclass QQdenglu {
publicstaticvoid main(String[] args){
//创建窗体对象
JFrame Jf=new JFrame();
//设置窗口标题
Jf.setTitle("QQ登陆");
//设置窗口大小
Jf.setSize(300,300);
//设置点击关闭按钮的时候退出程序
Jf.setDefaultCloseOperation(3);
//创建一个管理器布局规则
FlowLayout fl=new FlowLayout();
//将管理器规则加给窗体对象
Jf.setLayout(fl);
//添加组件
//文本标签,帐号
javax.swing.JLabel Jl=new javax.swing.JLabel("帐号");
//加到窗体中
Jf.add(Jl);
//输入框
javax.swing.JTextField field = new javax.swing.JTextField(20);
Jf.add(field);
//文本标签,密码
javax.swing.JLabel J2=new javax.swing.JLabel("密码");
//加到窗体中
Jf.add(J2);
//输入密码栏
javax.swing.JTextField field1 =new javax.swing.JTextField(20);
//加到窗体中
Jf.add(field1);
//登陆按钮
javax.swing.JButton JBu=new javax.swing.JButton("登陆");
//加到窗体中
Jf.add(JBu);
//设置一个保存密码的复选框
javax.swing.JCheckBox box = new javax.swing.JCheckBox("保存密码");
//加到窗体中
Jf.add(box);
//设置可见的
Jf.setVisible(true);
//给按钮加一个监听器
LoginListener lis= new LoginListener();
JBu.addActionListener(lis);
}
}
以上是类QQdenglu的代码部分,下面是它的监听器类LoginListener的代码部分
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
publicclass LoginListener implements ActionListener{
publicvoid actionPerformed(ActionEvent e){
JFrame jfr=new JFrame("跳转界面");
jfr.setSize(300,300);
JLabel label = new JLabel("你跳转了");
jfr.add(label);
jfr.setVisible(true);
}
}
程序预期结果是当点击登录按钮时,监听得到事件信息,弹出另外一个对话框
当我点击登录后出现的结果是
结果跟预期是一样的
这部分就总结这些,下次总结数组与集合框架的部分
10月6日写于蓝杰公司