- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 Swing用户界面组件综述
第9章 Swing用户界面组件;主要内容;9.1 Swing与模型-视图-控制器设计模式;面向对象软件最大的好处之一就是复用,不是解决任何问题都要从头做起。
在众多的软件开发过程中,人们发现了许多问题都可以运用以前的设计方案解决现在的问题。
设计模式也就应运而生,简单地说,设计模式是对反复出现的设计问题的重复解决方案。;AWT和Swing设计中常见的设计模式;模式的一般格式;9.1.2 MVC模式; MVC模式的组成;模型(Model)--存储并操作数据;
视图(View)--显示模型中的数据;
控制器(Control)--处理用户输入,并决定是否改变模型或者视图(通过调用相应的方法)。;模型、视图、控制器对象之间的交互;MVC模式的优点;为了简化组件的设计工作,在Swing组件中往往提供“组件包装器类”,将视图和模型两部分合为一体。
包装器类起到了一个“转发命令”的作用:
1. 需要查询内容时:包装器类向Model查询并返回结果。
2. 需要改变视图时:包装器类将此请求转发给View.
注意:包装器类不是万能的,有时候直接与Model打交道也是必要的。
;9.1.3 Swing按钮的模型-视图-控制器分析;按钮JButton是一个包装器类。对于大多数组件,模型类实现了名字以Model结尾的接口,然后组件就会使用Model类对象。例如:按钮就实现了ButtonModel接口。
例如:一个JButton对象中有一个存储其状态的分离模型ButtonModel对象(从其父类AbstractButton中继承) 。
可以通过下面的代码获得该ButtonModel对象:
JButton button = new JButton(“Blue”);
ButtonModel model = button.getModel()
注意:
1. Model不存储按钮标签或者图标。——即无法通过模型来知道外观
2.同一Model可用于不同组件。例如:DefaultButton Model可用于下压按钮、单选按钮、复选框甚至菜单项。;ButtonModel接口;ButtonModel接口提供了一系列的方法来获取按钮模型维护时所需的数据。
DefaultButtonModel(同样的模型)是一个实现了ButtonModel接口的类。
即使是采用同一Model的按钮,可能会有各自不同的View和Controller。
例如:当使用Metal观感时,JButton类会采用BasicButtonUI类作为其视图;用ButtonUIListener类作为控制器。
注意:一般情况下,不必直接操作View——这是感观代码的工作。;Java1.4不允许基本组件直接被加入到顶级容器中,以后的版本,基本组件即使允许被直接加入到顶级容器中,其中的组件也会互相覆盖,影响使用。
为了设计美观合理的界面,则需要进一步考虑如何设计和控制组件在容器中的位置和相互关系,就需要学习布局设计的知识。
在Java的GUI应用程序界面设计中,布局控制是通过为容器设置布局管理器来实现的。;*;*;*;*;*;*;*;*;*;*;*;CardLayout的容器可以容纳多个组件,但是实际上同一时刻容器只能从这些组件中选出一个来显示,就象一叠“扑克牌”每次只能显示最上面的一张。;为Frame类的实例f指定了一个 CardLayout类型的布局管理器,然后向其中加入了五张卡片,每张卡片都是Panel类的一个实例,并且具有不同的背景色。每当在程序窗口单击鼠标时,下一张卡片就会显示出来。;9.3 文本输入;JTextField 是一个轻量级组件,所谓的轻量级组件是用JAVA代码画出来的,这样的组件具有平台移植性;一般建议采用轻量级组件,这可以提高程序的移植性,在Javax.Swing包里的组件大部分是轻量级的。
API:javax.swing.text.JTextComponent
String getText()
void setText(String t)
获取或设置文本组件中的文本。
boolean isEditable()
void setEditable(boolean b)
获取或设置editable特性。; ;添加文本域
把一个文本域添加到一个窗口的通常办法是把 它添加到一个面板或其它容器中。
代码:
JPanel panel=new JPanel();
JTextField textField=new JTextField(
“文本域输入”20);
pa
文档评论(0)