您的位置:首页 > 产品设计 > UI/UE

图形界面(GUI)

2016-07-24 18:38 344 查看
AWT:抽象窗体工具

容器(Frame类)

组件(Button类)

颜色(Color类)

字体(Font类)

swing:

容器(JFrame类)

组件(JButton类)

当涉及到容器和组件的时候用Swing,需要操作字体颜色等用AWT

因此:Swing+AWT=SWT

容器:装东西的

组件:放到容器里面的东西(eg:按钮等)

首层容器:JWindow、JFrame(用的最多)、JOptionPane(弹出框)、Japplet、Jdialog

中间容器:不能单独存在。JPanel(面板)、JLabel(标签)

首层容器下面还可以在加容器和组件,这时的容器称为中间容器

布局管理器:LayOut

内容面板:窗体中间的一个自带容器

内容面板属于窗体

组件:

标签:JLable

文本框:JTextField

密码框:JPasswordField

下拉框:JComboBox

按钮:JButton

单选框:JRadioButton

复选框:JCheckBox

文本域:JTxtArea

滚动条:JScrollPane

菜单栏:JMenuBar

文件按钮:JFileChooser

菜单:JMenu

菜单项:JMenuItem

菜单栏之间诶往窗体上放的,而内容面板是往容器里面放的

菜单是放在菜单栏上的,菜单项是放在菜单里的

布局管理和面板镶嵌

布局管理器

边界布局:BoederLayout

流布局:FlowLayout

网格布局:GridLayout

卡片布局:CardLayout

边界布局:

在没有设置this.contentP.setLayout(null);这个是,默认是使用的边界布局管理器

把界面划分为东西南北中,南北要贯通,中间划最大,中间最大值得是不仅仅范围最大,

而且权利还最大可以占领其他位置,但其他位置是不能去占领中间位置

放的位置就是this.okBtn,BorderLayout.WEST 形式,可为东西南比任意一个位置

设置的时候要new一个BorderLayout this.contentP.setLayout(new BorderLayout());

边界布局管理器不是用来放一个个的组件,而是用来放中间容器的

网格布局

this.contentP.setLayout(new GridLayout(2,3);

按照行列的方式,在界面上划分空间,每个空间等大

如果划分空间不够,优先保证行不变,增加列

作用:主要是用来放置中间容器的

流布局

this.contentP.setLayout(new FlowLayout);

this.okBtn = new JButton();

然后直接放到contentp中去是从左往右,从上往下,中间开始进行顺序排放

组件大小又组件里面的内容决定

流布局用的地方一般是用在一行组件的设置

事件—event

事件委托 模型:

时间源对象–发生在谁身上的

监听器对象(委托对象)–他需要与事件源对象进行一个绑定,监听器是反应事件源对象发生的事

监听器让事件源做什么事件源就做什么,也可以使其他的东西做一些事情

1、先绑定事件源与监听器

2、监听器也有自己的职责范围,只管他自己职责范围内的事情

3、一个事件源可以绑定多个不同职责范围的监听器

4、一个监听器可以监听多个事件源

所有的监听器都是接口

找到事件源对象,然后在new出监听器对象,然后事件源对象有个add什么什么的方法,在传入监听器对象就好了

监听器实现方式一: 单独书写一个监听器类,实现监听接口,重写抽象方法

可以为不同的事件源使用同一个监听器类

也可以为每个事件源书写单独的监听器类

如果要操作窗体上的其他元素,必须要传参

好处:1、代码独立,各个类任务清晰

2、使用灵活,既可以为不同事件源书写同一个监听器类,也可以书写各自的

坏处:1、类的数量增加,维护量也增加了

2、如果要操作其他的容器或者组件,必须传参,也就是说非事件源的容器或组件,需要传参

监听器实现方式二:让容器类充当监听器

让容器类充当监听器,实现监听器接口,重写监听方法

好处:1、操作本容器的子容器或组件,不需要传参

坏处:1、类的任务不明确

2、无法为不同的事件源书写各自的监听

监听器实现方式三:使用匿名内部类,在绑定的时候,同时实现接口的重写

好处:1、访问本容器的子容器或者组件,不传参

2、每个事件源书写各自的监听器

3、类的功能各自独立

坏处:1、初学者代码比较难懂

CardLayout:

this.imgP = new ImagePanel();

this.btnP = new ButtonPanel();

this.contP.add(this.imgP);

this.contP.add(this.btnP);

首先设置为cardlayout

其他地方也一样 还是按照之前放进去,但是在放的时候需要起一个别名,并且别名不能重复

在添加的时候,要传两个参数,第一个是添加,第二个是该层的别名

放置的顺序和add的顺序是有关的,默认显示第一个

分层的时候就跟绑定有关系了

绑定拿的时候,是绑定的cardFrame

首先得到被翻页容器的cardlayout对象,然后调用布局管理器的cardlayout对象的next方法翻页

传入被翻页的容器和别名

1、取得被要求使用的卡片布局管理器

2、选择方法

Show

显示指定卡片

轮番

first,next,previous,last
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  界面 图形 gui swing