GUI:
1.Java . awt
1>各种各样的容器
2>组件
3>字体,颜色
……
2.Javax.swing
1>容器
2>组件
----------用到这两个的基本就是用swing包里面的。
其余用awt包中的。
swing+awt
丨
---------------------swt----------------
JFrame :
1.组件:
标签,按钮,文本框,下拉框,单选,复选
2.中间容器JPanel。
***************************************************************************************************
容器:
1.首层容器。
JWindow
JFrame JApplet (---flash),
JDialog(弹出框)
2.中间容器。
JPanel
---------------------------------------------------------------------------------------------------
窗体的基本常用方法:
JFrame frame = new JFrame();
frame.setSize( x , y); //大小// 先水平,后垂直
frame.setLocation(x , y); //位置
frame.setTitle("标题名字");
-----------------------一个工具类
ToolKit tk=ToolKit.getDefaultToolkit(); //工具类
tk.getScreenSize().getWidth();--------取得当前屏幕的宽度
tk.getScreenSize().getHeight();-------取得当前屏幕的高度
frame.setIconImage(tk.createImage("文件地址以及文件名")); //设置图标文件
frame.setBackground(Color.Black ) ;// 设置窗体颜色-----要改内容面板的背景色才有空
frame.setResizable(false); //窗体大小不可变。
frame.setDefaultCloseOperation(this.EXIT_ON_CLOSE ) ; //设置窗体关闭即程序结束
frame.setVisible(true); //显示窗体可见---------写在最后
{ //操作内容面板--------------
Container contentP =new Container();---------JFrame 自带 在写的过程中不需要new
(this.contentP=this.getContentPane() ;-------得到内容面板)
this.contentP.setBackground(Color.BLACK);
this.contentP.setLayout ( null );
//设置内容面板的布局管理为空,这样给的组件位置大
小才会起作用。
}
--------------------------------------------------------------------------------------------------------
所有的组件第一件事都是产生对象。
组件:
------------大部分方法与窗体一样。
标签 :JLabel 按钮:JButton 文本框:JTextField
密码框: JPasswordField
下拉框: JComboBox
单选框:JRadioButton
文本域:JTxtArea
ButtonGroup ------
new 一个先。
然后把选项add进去------就关联起来 互斥了。
复选框:JCheckBox
标签:
this.uesrnameLab.setForeground(红,绿,蓝) //自定义颜色
this.uesrnameLab.setFont(new Font(“字体”,
Font.BOLD, 磅值大小 ));
丨
粗体/斜体/普通==
//调试标签大小和位置的特有代码---调完以后注释掉。
this.usernameLab.setBorder(BorderFactory.createLineBorder( Color.BLACK)) ;
----------------------------------------------------------------------------------------
this.contentP.add( 组件 ); -------代表把组件放入他在的容器中
--------------------------------------------------------------------------------------------
文本域:
大体一样。
文本域在默认情况下没有外边框的。
这里设置字体等一些。
JScrollPane sp = new JScrollPane( 将文本域放在这里);
然后下面的就设置sp的位置就可以了。
***************************************************************************************************
this.usernameLab.setBorder(BorderFactory.createTitledBorder(" title名字")) ;
提供焦点:组件对象 . requestFocus();
***************************************************************************************************
事件处理:
1. 委托事件模型。
2. 事件分类。
3. 事件代码实现。----------→匿名内部类
--------------------------------------------------
布局管理器:
1. 边界布局管理器
2. 流布局管理器
3. 网格布局管理器
----------------理论
4. 卡片布局管理器
----------------代码
=======================================================
事件处理:
1.普通事件处理
1>按钮
2>操作人员
2. 委托事件(Java)
1>按钮-----事件流
2>监听者(绑定按钮)---事件处理
特点:1.一个监听器可以监听多个事件源。
2.一个事件源对象可以绑定多个监听器。(每个监听器监听不同的事件)
3.处理之前,监听器必须与事件源绑定。
3>操作
----------------------------------------------
步骤:1.先书写事件源对象---画界面
2.根据要处理的事件类型,选择相应的监听器。
3.把功能实现在该监听器的特殊方法里面。
4.把监听器对象和事件源对象绑定
事件类型(*****Listener)--------EventListener:
1.ActionListener
监听器第一种实现方式:
单独书写一个监听器类,实现监听器接口。
特点:1.既可以为每个事件源单独书写监听器类,也可以让有相似功能
事件源共用一个监听器。
2.如果处理时需要用到来自于界面的其他组件或容器,要传参。
(get/set,或带参构造)
监听器第二种实现方式:
让容器类既充当容器,又充当监听器。毋须书写单独的类。
特点:1.无法为每个事件源单独书写监听器类。只能让不同的事件源共
用一个监听器。
2.如果操作
当前容器身上的组件或者子容器,可以不用传参。
监听器第三种实现方式:
匿名内部类。
特点:1.为每个事件源单独书写的监听器。
2.操作本容器的组件或子容器,不需要传参。
适配器:
与监听器的关系:
--------------------适配器就是实现了监听器接口的类,他将监听器接口中的抽象方法全部
空实现。这样在使用时,只需要直接声明适配器的内部类。重写需要用到
的方法,其他方法不用再重写了。
--------------------------------------------------------------------------------
几个默认弹窗:
1.普通弹框
JOptionPane.showMessageDialog(弹出在哪里的中间位置,"弹出内容");
2.输入框
JOptionPane.showInputDialog(弹出在哪里的中间位置 , "提示输入!")
----------用一个String类型来接 (返回String)
// 如果没有输入:点确定-返回的是空串,点取消-返回的是空(输入了点也是
一样)。
(这里有空指针异常!注意)
3.确定框
JOptionPane.showConfirmDialog(仍然是位置!,“你确定什么什么是什么?”);
注意:返回的是int类型。
是--返回--0 否--返回--1 取消--返回--2
---------------------------------------------------------------------------------------
布局管理器(Layout):
1.空布局-null-不使用任何现成的布局管理器。
所有的组件/容器的位置大小全部由程序员set
2.边界布局管理器(BorderLayout)
要点 :1.窗体内容面板自带
2.把整个容器划分为5个部分,东南西北中,南北要贯通,中间
最大。
3.中间最大不仅仅指位置最大或者面积最大,而且权利也最大,周
边不存在,中间要去占领周边,中间不存在,周边不能占领中间。
适用范围:其作用是把一个大的界面划分成多个小的界面。主要是放容
器的。
3.流布局管理器(FlowLayout)-----JPanel 默认的布局管理器:
1>根据从上往下,从左往右,从中间开始的方式依次放入组件。
2>组件的位置会根据容器的大小改变而改变,不适用于大面积容器,最好
是单行容器。
3>组件的大小是根据组件的内容来决定的。
在此布局下设置文本框的宽度:
this.xxxx.setColumns( int n); n-列数
4.网格布局管理器(GridLayout)
1>将容器按照行列划分等大的几个部分。
2>当放入的组件或子容器的个数与设置的个数不匹配时,
优先满足行。
列是可以变化大,变大变小
3>主要用于等分一个大容器为多个等大的小容器。
5.卡片布局管理器(CardLayout)
this.add(" 为panel取个别名",new的panel )
1、得到被设置为要翻页的容器的卡片布局。
CardLayout cardL =(CardLayout)xxx.getLayout();
2、调用该卡片布局的方法,完成操作。
cardL.next(
picp
);
丨→ 翻页的容器。
cardL.first( );
cardL.Last( );
cardL.Previous( );
----------------
跳指定页面:
cardL.show( picP , panel取的别名);
====================================================