




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Swing,第九章,2,回顾,Graphics 类用于在屏幕上绘制诸如文本、线条、矩形和椭圆的对象。 Font 类用于使 Java 程序输出结果中的文本显得更生动。 FontMetrics 类用于获得关于字体的信息。 Color 类用于向应用程序或小应用程序组件添加颜色。 绘图模式决定了对象如何被画在窗口中。,3,目标,描述 Swing 的结构 使用 Swing GUI 的容器 使用Swing文本组件 使用Swing中用于选择性输入的常用组件 使用Swing菜单,4,简介,许多软件平台都提供“基本类库”(FC) 基本类库简化了设计过程,并减少了在编写代码上花费的时间 Microsoft 基本类
2、 (MFC) 和 Java 基本类 (JFC) 是两个使用广泛的类库,5,Java 基本类库 (JFC),JFC 通过添加一组 GUI 类库扩展了原始 AWT JFC提供附加的可视化组件类以及屏幕设计的独特方式 JFC 是一组 API,包括以下的一些模块: Swing 组件集 可访问性 API 拖放 API Java 2D API,6,Swing介绍,Java1.2引入称为Swing的新的GUI组件库。 Swing包括javax.swing包及其子包。 Swing有一个与平台无关的实现,而且具有一个艺术状态的属性集。 尽管Swing独立于AWT,但它是依照基本的 AWT类实现的。,7,MVC设
3、计模式,8,Swing 结构,Object,Component,JFrame,Container,Window,Frame,Dialog,JDialog,JText,JComboBox,JLabel,JList,JMenuBar,JOptionPane,JPanel,JScrollBar,AbstractButton,JToggleButton,JMenuItem,JButton,JCheckBox,JRadioButton,JComponent,JMenu,9,Swing 组件,Swing 组件独立于本地窗口系统。 Swing组件除了 AbstractButton 类之外都以 J 开头。 S
4、wing 组件是基于 AWT 构建。 包含 AWT 可视化组件的替代组件,也包含复杂组件 - 树和表,J,10,Swing 应用程序的容器层次,设计 GUI 时,都有用于放置可视化组件的主窗口。 Container 对象可用于将组件组合在一起。 容器中的组件根据特定布局排列。 Swing 中的容器有两类: - 顶级容器 - 中间容器,11,顶级容器,JFrame:用于框架窗口的类,此窗口带有边框、标题、用于关闭和最小化窗口的图标等。带 GUI 的应用程序通常至少使用一个框架窗口。 JDialog:用于对话框的类。 JApplet:用于使用 Swing 组件的 Java Applet 的类。,1
5、2,中间容器,JPanel:最灵活、最常用的中间容器。 JScrollPane:与 JPanel 类似,但还可在大的组件或可扩展组件周围提供滚动条。 JTabbedPane:包含多个组件,但一次只显示一个组件。用户可在组件之间方便地切换。 JToolBar:按行或列排列一组组件(通常是按钮)。,13,Swing GUI框架,你好,世界,菜单栏,顶级容器,GUI组件,GUI组件,内容窗格,14,基本的 Swing 应用程序,import javax.swing.*; public class HelloSwing public static void main(String args) JFra
6、me frame = new JFrame(HelloSwing); JLabel label = new JLabel(你好,Swing); frame.getContentPane().add(label); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); frame.setSize(300,200); frame.setVisible(true); ,导入必要的包,一般还需导入: import java.awt.*; import java.awt.event.*;,设置一个 顶级容器,创建一个 Swing组件,将组件添加到
7、容器内容窗格,实现了在单击“关闭”按钮时, 可以关闭窗口。如果使用的 早期版本的平台,则需要通过事件监听器实现,15,JFrame,是放置其他 Swing 组件的顶级容器 JFrame 组件用于在 Swing 程序中创建窗体 它的构造函数: JFrame() JFrame(String Title) 组件必须添加至内容窗格,而不是直接添加至 JFrame 对象,示例: frame.getContentPane().add(b);,16,JPanel,JPanel 组件是一个中间容器 用于将小型的轻量级组件组合在一起 JPanel 的缺省布局为 FlowLayout JPanel 具有下列构造函
8、数: JPanel() JPanel(LayoutManager lm),17,JButton,Swing 的按钮相对于AWT中Button类提供了更多的功能。 JButton类允许用图标、字符串或两者同时构造一个按钮。 构造函数如下: JButton() JButton(Icon icon):icon表示使用的图标 JButton(String text):text表示使用的字符串 JButton(String text, Icon icon), ImageIcon buttonIcon1 = new ImageIcon(on.gif); JButton b1 = new JButton(F
9、irst Button, buttonIcon1); b1.setMnemonic(KeyEvent.VK_F); ,设置键盘 快捷方式,创建一个带图标的JButton,18,JPanel和JButton使用示例,import java.awt.*; import javax.swing.*; class PanelDemo extends JFrame public PanelDemo( String title) super(title); Container c=getContentPane(); JPanel cpane = new JPanel(); JButton ok = new
10、 JButton(确定); cpane.add(ok); JButton cancel = new JButton(取消); cpane.add(cancel); c.add(cpane,BorderLayout.SOUTH); ,public static void main(String args) PanelDemo pd=new PanelDemo(JPanel测试); pd.setSize(300,200); pd.setVisible(true); ,19,JLabel,它既可以显示文本也可以显示图像 构造函数如下: JLabel(Icon icon):icon表示使用的图标 JL
11、abel(String text,Icon icon,int align):text表示使用的字符串; icon表示使用的图标;align表示水平对齐方式,其值可以为:LEFT、RIGHT、CENTER。, ImageIcon icon = new ImageIcon(Calv.gif); JLabel calv_label = new JLabel(这是 Calvin, icon, SwingConstants.LEFT); ,20,文本组件,JtextComponent 为所有 Swing 文本组件的根类,21,JTextField,JTextField 组件允许输入或编辑单行文本 此类的
12、构造函数包括: JTextField() JTextField(Document doc, String text, int columns) JTextField(int columns) JTextField(String text) JTextField(String text, int columns), Container con = getContentPane(); con.setLayout(new FlowLayout(); JLabel jl = new JLabel(“文本域”); con.add(jl); JTextField tf = new JTextField(2
13、0); con.add(tf); ,22,JTextArea,JTextArea 组件用于接受来自用户的多行文本 它可实现可滚动界面 JTextArea 组件可使用下列构造函数创建: JTextArea() JTextArea(int rows, int cols) JTextArea(String text) JTextArea(String text, int rows, int cols) JTextArea(Document doc) JTextArea(Document doc, String text, int rows, int cols), JLabel jl = new JL
14、abel(“文本区”); con.add(jl); JTextArea ta = new JTextArea(5,10); con.add(ta); ,23,选择性输入,为了简化表单填写过程,通常为用户提供多种可供选择的选项,而无需用户写出他们的响应。常用于选择性输入的组件有: 复选框 单选按钮 列表框 组合框,24,复选框,复选框用于为用户提供一组选项 JCheckBox 类具有下列构造函数: JCheckBox() JCheckBox(Icon icon) JCheckBox(Icon icon, boolean selected) JCheckBox(String text) JChec
15、kBox(String text, boolean selected) JCheckBox(String text, Icon icon) JCheckBox(String text, Icon icon, boolean selected),25,单选按钮,单选按钮允许用户从多个选项中选择其中一个 ButtonGroup 用于在 Swing 中创建组 JRadioButton 对象可使用下列构造函数创建: JRadioButton() JRadioButton(Icon icon) JRadioButton(Icon, boolean selected) JRadioButton(Strin
16、g text) JRadioButton(String text, boolean selected) JRadioButton(String text, Icon icon) JRadioButton(String text, Icon icon, boolean selected),26,JCheckBox和JRadioButton使用示例,import java.awt.*; import javax.swing.*; class Hobby extends JPanel JCheckBox c1 = new JCheckBox(阅读,false); JCheckBox c2 = new
17、 JCheckBox(音乐,false); JCheckBox c3 = new JCheckBox(绘画,false); JRadioButton rad1 = new JRadioButton(大专); JRadioButton rad2 = new JRadioButton(本科); JRadioButton rad3 = new JRadioButton(硕士); JLabel jl = new JLabel(您有什么爱好? ); JLabel j2 = new JLabel(您的最高学历? ); JButton exitbtn = new JButton(退出); public Ho
18、bby( ) setLayout(new GridLayout(9,1); add(jl); add(c1); add(c2); add(c3); add(j2); add(rad1); add(rad2); add(rad3); add(exitbtn); ,public class Hobbytest extends JFrame Hobbytest() super(); getContentPane().add(new Hobby(); setSize(300,200); setVisible(true); public static void main(String args) new
19、 Hobbytest(); ,27,列表,在可供选择的选项很多时,可向用户呈现一个列表来供他们选择 JList 组件依次排列项目列表,这些项目可以单选或多选 JList 类既可显示字符串,也可显示图标 JList 不支持双击 MouseListener 可用于解决双击问题,28,JList 构造函数,public JList() : 使用空模型构造 JList public JList(ListModel dataModel) :构造一个列表,用它显示指定模型中的元素。 public JList (Object listData) :构造一个列表以显示指定数组listData的元素。 JLis
20、t 不支持滚动。要启用滚动,可使用下列代码: JScrollPane myScrollPane=new JScrollPane(); myScrollPane.getViewport().setView(dataList);, String stars = 安东尼奥.班德拉斯,来昂纳多.迪卡普尼奥, 桑德拉.布洛克,休.格兰特,朱莉亚.罗伯茨; JList moviestars = new JList(stars); ,29,组合框,文本域和下拉列表的组合 在 Swing 中,组合框由 JComboBox 表示 构造函数如下: public JComboBox() : 此构造函数使用缺省数据模
21、型创建 JComboBox public JComboBox(ComboBoxModel asModel) : 使用现有 ComboBoxModel 中的项目的组合框 public JComboBox(Object items) : 包含指定数组元素的组合框, String names = 弗雷德里克.福西斯, 约翰.克里沙姆, 玛丽.希金斯.克拉克,帕特丽夏.康威尔; JComboBox authors = new JComboBox(names); ,30,菜单显示项目列表,指明各种任务。 选择或单击某个选项时会打开另一个列表或子菜单。 Swing 菜单由菜单栏、菜单和菜单项构成。 菜单栏
22、是所有菜单和菜单项的根,菜单,31,JFC 菜单组件,32,JMenuBar,JMenuBar 是可通过 JFrame、JWindow 或 JInternalFrame 的根窗格添加至容器的组件。 由多个 JMenu 组成,每个 JMenu 在 JMenubar 中都表示为字符串。 JMenuBar 需要两个附加类: SingleSelectionModel类 : 跟踪当前选定的菜单 LookAndFeel类 :负责绘制菜单栏以及对在其中发生的事件作出响应,33,JMenu,JMenu 在 JMenuBar 下以文本字符串形式显示,而在用户单击它时,则以弹出式菜单显示。 JMenu 具有两个附
23、加类: JPopupMenu :用于显示 JMenu 的菜单项 LookAndFeel :负责绘制菜单栏中的菜单以及对在其中发生的所有事件作出响应,34,JPopupMenu 的函数,35,JMenuItem,JMenu 或 JPopupMenu 中的一个组件,以文本字符串形式显示,可以具有图标 JMenuItem 的外观可以修改,如字体、颜色、背景、边框等 除字符串外,在 JMenuItem 中还可以添加图标,36,JCheckBoxMenuItem,将复选框作为其项目 复选框是使用 JCheckBox 类创建的 可有文本字符串和(或)图标 在单击并释放 JCheckBoxMenuItem 时,菜单项的状态会变为选定或取消选定,37,JRadioButtonMenuItem,除了在任何时间点都只能选择一个单选按钮外,其他的与复选框类似 可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度教育培训机构教育行业数据服务协议
- 二零二五年度农业科技文职人员聘用协议
- 2025年度茶楼合作经营协议书:茶楼与茶艺茶具研发中心的合作合同
- 二零二五年度知识产权质押合同解除与资金返还协议
- 2025年度船舶租赁与船舶技术咨询服务协议
- 2025年度超市转让与智能化升级改造合作协议
- 2025年度智能化社区物业委托经营管理合同
- 专业资格教育培训合作协议
- 新型储能技术应用开发合作协议
- 行路难:古典诗词中的壮志情怀教案
- 公对公打款合同
- 抗生素种类归纳分类
- 01-BUFR格式应用指南(试用版)
- 体育测量与评价04心肺功能的测量与评价
- 提高意识风险防范化解能力体会发言
- RB/T 089-2022绿色供应链管理体系要求及使用指南
- 2023年度危险作业安全监护手册
- 马克思主义哲学十讲
- 催化材料智慧树知到答案章节测试2023年南开大学
- GB/T 9846.1-2004胶合板第1部分:分类
- GB/T 32685-2016工业用精对苯二甲酸(PTA)
评论
0/150
提交评论