Java DUI 笔记

8月9日
java.awt
Abstract Window Toolkit(AWT):
用来生成用户界面的GUI组件,一个事件处理的系统,一种安排组件来实现平台无关性的机制。
GUI的显示:
1 需要容器(Frame);
2 将组件放入容器;
3 显示容器
FrameTest.java
Java中awt包的使用步骤:
1 导入包
2 声明容器,组件
3 在构造中实例化容器,组件,设置布局管理器
4 将组件添加到容器中(add( ))
5 设置容器的大小,坐标
setSize(200,300);
setLocation(200,300);
6 设置容器可见
setVisible(true);
控制容器 ---------(为容器布局------在容器中合理的摆放组件)
java通过------LayoutManager(布局管理器)实现容器的布局
提供的五种布局管理器包括:
1 Flow Layout
特点:从左到右,一个跟随一个进行摆放,默认情况下:在容器居中
练习:
将默认居中改为,在右边显示
FolwLayoutTest.java
GUI程序的另一种写法:
使用当前类继承于Frame:
示例:
public  class MyFrame extends Frame
{
}
MyFrame.java
2 Grid Layout:
特点:像表格一样,以行,列的方式进行组件的管理,一般使用GridLayout(int rows, int cols)
其中:
rows:代表行数
cols:代表列数
当需要调整它们的间隙时,调用四个参数的构造
GridLayoutTest.java
3 Border Layout
特点:它是Frame默认的布局管理器
它是排列方式是以:东,西,南,北,中
默认的排列方式为:居中
其中:南,北横穿 容器
在使用的时候:使用add(args1,args2)
args1;传要添加的组件
args2:传BorderLayout的布局方式
BorderLayoutTest.java
4 Card Layout
特点:以卡片的方式进行组件的排列,一次只可以显示一个组件
1 使用方式:
add(args1,args2)
args1:传要添加的组件
args2:设置组件的名字
2 显示
CardLayout的:
Show(args1,args2)
args1:传容器
args2组件的名字
默认:显示第一个卡片
CardLayoutTest.java
5 Null Layout
Null布局管理器
特点:灵活组件的坐标,大小都需要程序员自行设定
实现:
1 setLayout(null)
2通过组件的:
public void setBounds(int x,
                  int y,
  int width,
  int height)
x:代表按钮的x坐标
y:代表按钮的y坐标
width:按钮的宽度
height:按钮的高度
NullLayoutTest.java
局部布局的实现:
Panel----面板
作用:实现局部布局
它本身是一个容器,但是它不可以像Frame独立显示
使用步骤:
1 Frame
2 Panel
3组件添加Panel
4 Panel添加到Frame
Panel的默认布局管理器-------FlowLayout
PanelTest.java
练习:
实现一个用户登录界面:
Login.java
布局格式:
用户名:-----
密码:-------
登录   取消
组件介绍:
用户名----Label
文本框----TextField
登录-----Button
8月10日
事件处理:
响应用户对于GUI的操作
java中将处理事件的机制----------事件监听
具体实现的时候--------事件监听器
1 动作监听器:
ActionListener
void actionPerformed(ActionEvent e)
特点:当用户产生一个动作的时候,这个方法被自动调用
ActionEvent 参数也是系统自动传递
ButtonAction.java
Java.awt.event包 //主要应用于图形的事件监听
事件监听器的实现和使用步骤:
1 自定义类实现addActionListener接口
2 实现接口中的所有方法
3 在方法中编写自己的功能
4 实例化事件监听器
5 将事件源和事件监听器对象关联
addActionListener
setActionCommand() //可以返回事件源的名字
事件监听器的各种写法:
1 外部类实现
2 内部类实现
特点:直接访问外部类的属性,节省代码量
ButtonAction_1.java
3 匿名内部类实现
ButtonAction_2.java
4 当前类直接实现监听
ButtonAction_3.java
监听程序列表:
ActionListener
Button
List
MenuItem
TextField
ItemListener
Choice
Checkbox
List
WindowListener
Dialog
Frame
各种监听器:
MouseListener //专门应用于鼠标的动作监听五种方法,当遇到不同动作的时,系统会选择性的调用。
示例:当鼠标单击的时候,系统只会调用,mouseClicded()
方法简介:
1 mouseClicked() //当鼠标单击时
2 mouseEntered() //当鼠标进入时
3 mouseExited() //当鼠标离开时
4 mousePressed() //当鼠标按下时
5 mouseReleased() //当鼠标释放时
MouseListenerTest.java
键盘监听器:
当用户按下键盘的时候,可以捕获,打印
KeyListenerTest.java
重点:
1 ActionListener
2 事件监听的四种写法
3 MouseListener
MouseMotionListener
8月11日
事件适配器(Adapter):
以类的方式出现:程序员可以有选择的实现某一个方法
WindowAdpterTest.java
在AWT中的图形操作(了解):
java.awt.Graphics; //实现基本的图形操作
1 将Graphics和Frame关联起来;
  Frame的getGraphics方法
示例:
Graphics g- Frame---对象.getGraphics( );
2 可以使用Graphics的各种方法进行绘画;
练习:
使用适配器的机制实现Frame 的图形操作功能
MouseAdapterTest.java
回顾AWT:
1 容器(Cantainer)和组件(Component)的概念
2 两个容器:
2.1 Frame-------BorderLayout
2.2 Panel-------FlowLayout
3 布局管理器
3.1 FlowLayout
3.2 GridLayout
3.3 BorderLayout
3.4 CardLayout
3.5 NullLayout
4 事件监听
4.1 接口实现
4.2 适配器实现
javax.swing
AWT是Swing的基础,Swing产生主要原因就是AWT不能满足图形化用户界面发展的需要。
JFC //java基础类库
MFC //微软基础类库
Swing使用的设计模式MVC:
M-------Model //模型
V-------View //视图
C -----Controller //控制器
目标:为界面类的程序提供一种便于分工合作,维护设计思想。
实际开发的MVC应用:
M-------Mode------数据实现
V-------View--------界面实现
C -----Controller---将M---V 协同工作
1 Swing与AWT直观的区别:
示例:
AWT-----Frame
Swing----JFrame
AWT-----Panel
Swing----Jpanel
新建一个项目:Swing
MySwing.java
Swing程序的编写步骤:
1 设置顶层容器
示例:
class MySwing extends JFrame{

private java.awt.Container c;
public MySwing( )
{
c = getContentPane( );
}
}
2 设置布局管理器:
c.setLayout( );
3 添加组件
c.add( );
4 设置大小,可见
setSize( );
setVisible( );
5 事件监听
练习:
将之前的AWT,Login改写为Swing
swing的常用组件:
JButton //按钮
JTextField //文本框
JLable //标签
JPasswordField //密码输入框
SetEchoChar(‘*’) //可以自定义回显的符号
JCheckBox //多选框
JCheckBoxTest.java
JRadioButton //单选框
JRadioButtonTest.java
注意:当JRadioButton都属于同一个组的时候,才会相互排斥
通过ButtonGroup //数据类型实现
8月13日
SwingText.java
写界面类程序:
1 分析界面需要的组件;
2 在属性的声明区,声明出来;
3 在构造中实例化:
参考:1参考写过的代码
2参考手册
4 设置布局管理器;
5将组件添加到顶层容器;
6 设置大小,设置可见;
JTextArea------------ 文本区
JTextAreaTest.java
JComboBox // 组合框
JComboBoxTest.java
JList //列表
JScrollPane //以滚动的方式装入组件
ListSelectionListener //JList的事件监听器
JListTest.java
Swing 的常用组件:
1 JButton
2 JLable
3 JTextField
4 JTextArea
5 JCheckBox
6 JRadioButton
7 JPassworkField
8 JComboBox
9 JList
10 JScrollPane
11 JMenu //菜单
12 JMenuBar
13 JMenuItem
  JMenuBar--àJMenu--àJMenuItem
  JMenuTest 模拟MyEditor中的记事本
14 JPopupMenu //弹出式菜单-----点击鼠标右键触发
  JPopupMenu----àJMenuItem
  show() //方法用于显示,弹出式菜单
JMenuTest.java
8月14日
1 JFileChooser //文件选择对话框
方法: 1 showopenDialog( ) //弹出打开对话框
2 showsaveDialog( ) //弹出保存对话框
如果返回值为 JFileChooser..APPROVE_IPTION //代表用户选择确认
JFileChooserTest.java
2 JFileChooser的文件过滤功能
根据用户的选择,显示不同文件类型(文件的后缀名)
.txt //文本文件
.java // java程序
.exe //可执行程序
实现步骤:
在JFileChooser包中
1 自定义类型,实现FileFilter的接口
在javax.swing,FileChooser包中
分析FileFilter(抽象类)
boolean  accept(File f)
返回值:如果为true代表在文件选择器中显示此类文件
技术点:能够获得文件的后缀名

如何获得文件的后缀名?根据点(.)
用lastIndexOf 与substring
String getDescription( )
返回值:对于当前过滤器的描述--------过滤器的名字
2 将文件选择与文件过滤器关联起来
Chooser.setFileFilter(filter)
JavaFileFilter.java
Utils.java //获得文件后缀名
JTable // 将数据以表格的方式显示出来
常用构造:
JTable(Object[ ][ ] rowData , Object[ ] ColumnNames)
参数1 代表装入表格中的数据
参数2 代表表头
JTableTest.java
JTree //通过树的方式,进行数据的显示

1 根---------根节点
2 树叶--------子节点
javax.swing.tree包的;
DefaultMutableTreeNode //代表节点
示例:
DefaultMutableTreeNode treeNode =
New DefaultMutableTreeNode(“根节点”);
DefaultMutableTreeNode treeNode2 =
New DefaultMutableTreeNode(“子节点”);
TreeNode.add(treeNode2);
如何实现JTree:
1 创建节点------ DefaultMutableTreeNode
1 将JTree 和节点关联:
JTree tree = new JTree(treeNode);
JTreeTest.java
回顾Swing :
1 AWT 是Swing 的基础:
Swing的实现都是继承于java.awt.Container
Swing 使用MVC设计模式实现
Swing程序的编写步骤:共6步
Swing整体2大步:
绘制界面
事件监听
17个常用的组件
5.1 组件的外观作用
5.2 组件特殊的事件监听器
8月15日
大练习:
将DemandSystem移植到Swing
UserManagerGUI.java
8月16日
国际化编程的意义:
可以使得软件,在不同语言的操作系统显示不同的语言界面
资源包:
讲信息封装包(Resource Bundle)中
在java.util中提供了一个ResourceBundle类,用于表示资源包
LocaleTest.java
软件国际化实现的步骤:
1 获得操作系统语言
  Locale defaultLocale = Locale.getDefault( );
制作语言包:
//英文语言包
class MyResource extends ListResourceBundle
//中文语言包
class MyResource zh_CN extends ListResourceBundle
关联语言包:
ResourceBundle bundle = ResourceBundle.getBundle("MyResource",
defaultLocale);
使用语言包:
String title = (String) bundle.getObject(“Title”);
文件夹Resource
ClassTest.java
反射机制
当需要检测类的的信息时,可以使用java的反射机制,可以检测的如:
修饰符,方法,属性,继承的父类,实现的接口
一般使用:getFields( ); getMethods( );
getConstrutors( )…返回的类型在;
java.lang.reflect.*;
ConturctorsInfo.java
JDK新特性
Static import   //静态导入
Auto boxing/auto unboxing //自动装箱,拆箱
Generics      //泛型
New Loop //新的循环
Changeale arguments //可变参数
Enum    //枚举类型
使用Static import,可以导入其他类中的静态属性和方法,然后在导入的类中,象使用自己的属性或者方法一样使用
语法:
import static
package.Class.static_method
import static package class
TestStaticImport.java
枚举
使用enum关键字定义枚举类型
Sex.java
Test.java
新的循环
用于遍历数组或者集合
for(type variable:数组或者集合){…}
NewLoopTest.java
可变参数
在方法声明中,可以使用可变参数的同一个类型的变量
使用”…”实现
java编译器将可变参数转换成数组处理
在方法中的可变参数最多只可以有一个
Parm.java

你可能感兴趣的:(java,设计模式,mvc,swing,项目管理)