收藏 分享(赏)

9界面高级设计Swing.ppt

上传人:dreamzhangning 文档编号:2194631 上传时间:2018-09-05 格式:PPT 页数:41 大小:432.50KB
下载 相关 举报
9界面高级设计Swing.ppt_第1页
第1页 / 共41页
9界面高级设计Swing.ppt_第2页
第2页 / 共41页
9界面高级设计Swing.ppt_第3页
第3页 / 共41页
9界面高级设计Swing.ppt_第4页
第4页 / 共41页
9界面高级设计Swing.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、Java语言与面向对象程序设计,Swing,第十讲 界面高级设计,目标,描述 Swing 的结构使用 Swing GUI 的容器使用Swing文本组件使用Swing中用于选择性输入的常用组件使用Swing菜单,简介,许多软件平台都提供“基本类库”(FC) (Foundation Class) 基本类库简化了设计过程,并减少了在编写代码上花费的时间 Microsoft 基本类 (MFC) 和 Java 基本类 (JFC) 是两个使用广泛的类库,Java 基本类库 (JFC),JFC 通过添加一组 GUI 类库扩展了原始 AWT JFC提供附加的可视化组件类以及屏幕设计的独特方式 JFC 是一组

2、API的集合,包括以下的一些模块: 抽象窗口工具包(Abstract Window Toolkit) 新GUI类库(swing) 支持二维模型的类库(Java 2D) 支持拖放的类库(Drag and Drop) 支持易用性的类库(Accessibility),Swing介绍,Java1.2引入称为Swing的新的GUI组件库,是Sun公司用来描述下一代图形界面的标准。 Swing继承了AWT,但它是100纯Java代码实现,不依赖于任何平台,并且可以自由设置和改变界面的整体风格(pluggable look and feel,PL&F)。 尽管Swing是从 AWT中派生下来的,但Swing

3、并不使用AWT组件,这保证了Swing界面在各种平台显示的一致性。 Swing包括javax.swing包及其子包。,MVC设计模式,模型视图控制体系,模型:存储定义组件的数据。 视图:维护组件的可视化表示,即外观。 控制:用于处理用户和组件的交互。,例如:Swing的改变应用程序的可视化外观功能,目录树结构的实现等,都是基于MVC模式实现的,Mvc模型,Java与模式 有详细介绍。,Swing 结构,Object,Component,JFrame,Container,Window,Frame,Dialog,JDialog,JText,JComboBox,JLabel,JList,JMenuB

4、ar,JOptionPane,JPanel,JScrollBar,AbstractButton,JToggleButton,JMenuItem,JButton,JCheckBox,JRadioButton,JComponent,JMenu,Swing 组件,Swing 组件独立于本地窗口系统。 Swing组件类大部分都以 J 开头。 Swing 组件是基于 AWT 构建,包含了 AWT 可视化组件的替代组件,也包含了其它复杂组件 - 树和表,J,Swing 应用程序的容器层次,设计 GUI 时,都有用于放置可视化组件的主窗口。 Container 对象可用于将组件组合在一起。 容器中的组件根据

5、特定布局排列。 Swing 中的容器有两类:- 顶级容器- 中间容器,顶级容器,JFrame:用于框架窗口的类,此窗口带有边框、标题、用于关闭和最小化窗口的图标等。带 GUI 的应用程序通常至少使用一个框架窗口。 JDialog:用于对话框的类。 JApplet:用于使用 Swing 组件的 Java Applet 的类。,中间容器,JPanel:最灵活、最常用的中间容器。 JScrollPane:与 JPanel 类似,但还可在大的组件或可扩展组件周围提供滚动条。 JTabbedPane:包含多个组件,但一次只显示一个组件。用户可在组件之间方便地切换。 JToolBar:按行或列排列一组组件

6、(通常是按钮)。,Swing GUI框架,顶级容器,JToolBar组件,JTabbedPane组件,JScrollPane组件,基本的 Swing 应用程序,import javax.swing.*; public class HelloSwing public static void main(String args) JFrame frame = new JFrame(“HelloSwing“);JLabel label = new JLabel(“你好,Swing“);frame.getContentPane().add(label); frame.setDefaultCloseOpe

7、ration(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);frame.setVisible(true); ,导入必要的包,一般还需导入:import java.awt.*;import java.awt.event.*;,设置一个 顶级容器,创建一个 Swing组件,将组件添加到 容器内容窗格,实现了在单击“关闭”按钮时, 可以关闭窗口。如果使用的 早期版本的平台,则需要通过事件监听器实现,JFrame,是放置其他 Swing 组件的顶级容器 JFrame 组件用于在 Swing 程序中创建窗体 它的构造函数: JFrame() JFrame(St

8、ring Title) 组件必须添加至内容窗格,而不是直接添加至 JFrame 对象,示例:frame.getContentPane().add(b);,JPanel,JPanel 组件是一个中间容器 用于将小型的轻量级组件组合在一起 JPanel 的缺省布局为 FlowLayout JPanel 具有下列构造函数: JPanel() JPanel(LayoutManager lm),JButton,Swing 的按钮相对于AWT中Button类提供了更多的功能。 JButton类允许用图标、字符串或两者同时构造一个按钮。 构造函数如下: JButton() JButton(Icon icon

9、):icon表示使用的图标 JButton(String text):text表示使用的字符串 JButton(String text, Icon icon), ImageIcon buttonIcon1 = new ImageIcon(“on.gif“); JButton b1 = new JButton(“First Button“, buttonIcon1); b1.setMnemonic(KeyEvent.VK_F); ,设置键盘 快捷方式,创建一个带图标的JButton,JPanel和JButton使用示例,import java.awt.*; import javax.swing.

10、*; class PanelDemo extends JFrame public PanelDemo( String title)super(title);Container c=getContentPane();JPanel cpane = new JPanel();JButton ok = new JButton(“确定“);cpane.add(ok);JButton cancel = new JButton(“取消“);cpane.add(cancel);c.add(cpane,BorderLayout.SOUTH);,public static void main(String arg

11、s) PanelDemo pd=new PanelDemo(“JPanel测试“);pd.setSize(300,200);pd.setVisible(true); ,JLabel,它既可以显示文本也可以显示图像 构造函数如下: JLabel(Icon icon):icon表示使用的图标 JLabel(String text,Icon icon,int align):text表示使用的字符串; icon表示使用的图标;align表示水平对齐方式,其值可以为:LEFT、RIGHT、CENTER。, ImageIcon icon = new ImageIcon(“Calv.gif“); JLabe

12、l calv_label = new JLabel(“这是 Calvin“, icon, SwingConstants.LEFT); ,文本组件,JtextComponent 为所有 Swing 文本组件的根类,JTextField,JTextComponent,JEditorPane,JTextArea,JTextPane,JPasswordField,JTextField,JTextField 组件允许输入或编辑单行文本 此类的构造函数包括: JTextField() JTextField(Document doc, String text, int columns) JTextField

13、(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(20); con.add(tf); ,JTextArea,JTextArea 组件用于接受来自用户的多行文本 它可实现可滚动界面 JTextArea 组件可使用下列构

14、造函数创建: 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 JLabel(“文本区”); con.add(jl); JTextArea ta = new JTextArea(5,10); con.add(ta); ,选择性输入,为了简

15、化表单填写过程,通常为用户提供多种可供选择的选项,而无需用户写出他们的响应。常用于选择性输入的组件有: 复选框 单选按钮 列表框 组合框,复选框,复选框用于为用户提供一组选项 JCheckBox 类具有下列构造函数: JCheckBox() JCheckBox(Icon icon) JCheckBox(Icon icon, boolean selected) JCheckBox(String text) JCheckBox(String text, boolean selected) JCheckBox(String text, Icon icon) JCheckBox(String text

16、, Icon icon, boolean selected),单选按钮,单选按钮允许用户从多个选项中选择其中一个 ButtonGroup 用于在 Swing 中创建组 JRadioButton 对象可使用下列构造函数创建: JRadioButton() JRadioButton(Icon icon) JRadioButton(Icon, boolean selected) JRadioButton(String text) JRadioButton(String text, boolean selected) JRadioButton(String text, Icon icon) JRadi

17、oButton(String text, Icon icon, boolean selected),JCheckBox和JRadioButton使用示例,import java.awt.*; import javax.swing.*; class Hobby extends JPanel JCheckBox c1 = new JCheckBox(“阅读“,false);JCheckBox c2 = new JCheckBox(“音乐“,false);JCheckBox c3 = new JCheckBox(“绘画“,false);JRadioButton rad1 = new JRadioBu

18、tton(“大专“);JRadioButton rad2 = new JRadioButton(“本科“);JRadioButton rad3 = new JRadioButton(“硕士“);JLabel jl = new JLabel(“您有什么爱好?“ );JLabel j2 = new JLabel(“您的最高学历?“ );JButton exitbtn = new JButton(“退出“);public Hobby( ) setLayout(new GridLayout(9,1); add(jl); add(c1); add(c2); add(c3);add(j2); add(ra

19、d1); 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 Hobbytest(); ,列表,在可供选择的选项很多时,可向用户呈现一个列表来供他们选择 JList 组件依次排列项目列表,这些项目可以单选或多选 JList 类既可显示字符串,也

20、可显示图标 JList 不支持双击 MouseListener 可用于解决双击问题,JList 构造函数,public JList() : 使用空模型构造 JList public JList(ListModel dataModel) :构造一个列表,用它显示指定模型中的元素。 public JList (Object listData) :构造一个列表以显示指定数组listData的元素。 JList 不支持滚动。要启用滚动,可使用下列代码:JScrollPane myScrollPane=new JScrollPane();myScrollPane.getViewport().setVie

21、w(dataList);, String stars = “安东尼奥.班德拉斯“,“来昂纳多.迪卡普尼奥“, “桑德拉.布洛克“,“休.格兰特“,“朱莉亚.罗伯茨“; JList moviestars = new JList(stars); ,组合框,文本域和下拉列表的组合 在 Swing 中,组合框由 JComboBox 表示 构造函数如下: public JComboBox() : 此构造函数使用缺省数据模型创建 JComboBox public JComboBox(ComboBoxModel asModel) : 使用现有 ComboBoxModel 中的项目的组合框 public JC

22、omboBox(Object items) : 包含指定数组元素的组合框, String names = “弗雷德里克.福西斯“, “约翰.克里沙姆“, “玛丽.希金斯.克拉克“,“帕特丽夏.康威尔“; JComboBox authors = new JComboBox(names); ,菜单显示项目列表,指明各种任务。 选择或单击某个选项时会打开另一个列表或子菜单。 Swing 菜单由菜单栏、菜单和菜单项构成。 菜单栏是所有菜单和菜单项的根,菜单,JFC 菜单组件,JMenuBar,JPopupMenu,AbstractButton,JSeperator,JMenuItem,JMenu,JC

23、heckBoxMenuItem,JRadioButtonMenuItem,JComponent,Container,Component,Object,JMenuBar,JMenuBar 是可通过 JFrame、JWindow 或 JInternalFrame 的根窗格添加至容器的组件。 由多个 JMenu 组成,每个 JMenu 在 JMenubar 中都表示为字符串。 JMenuBar 需要两个附加类: SingleSelectionModel类 : 跟踪当前选定的菜单 LookAndFeel类 :负责绘制菜单栏以及对在其中发生的事件作出响应,JMenu,JMenu 在 JMenuBar 下

24、以文本字符串形式显示,而在用户单击它时,则以弹出式菜单显示。 JMenu 具有两个附加类: JPopupMenu :用于显示 JMenu 的菜单项 LookAndFeel :负责绘制菜单栏中的菜单以及对在其中发生的所有事件作出响应,JPopupMenu 的函数,JMenuItem,JMenu 或 JPopupMenu 中的一个组件,以文本字符串形式显示,可以具有图标 JMenuItem 的外观可以修改,如字体、颜色、背景、边框等 除字符串外,在 JMenuItem 中还可以添加图标,JCheckBoxMenuItem,将复选框作为其项目 复选框是使用 JCheckBox 类创建的 可有文本字符

25、串和(或)图标 在单击并释放 JCheckBoxMenuItem 时,菜单项的状态会变为选定或取消选定,JRadioButtonMenuItem,除了在任何时间点都只能选择一个单选按钮外,其他的与复选框类似 可有文本字符串和(或)图标 单击选定的单选按钮不会改变其状态 单击未选定的单选按钮时将取消选定此前选定的单选按钮,菜单使用示例,import javax.swing.*; import java.awt.*; public class Menutest extends JApplet public void init() JMenuBar mb = new JMenuBar();JMenu

26、 fileMenu = new JMenu(“显示“);JMenu pullRightMenu = new JMenu(“问好“);fileMenu.add(“欢迎“);fileMenu.addSeparator();fileMenu.add(pullRightMenu);fileMenu.add(“退出“);pullRightMenu.add(new JCheckBoxMenuItem(“早上好!“);pullRightMenu.add(new JCheckBoxMenuItem(“下午好!“);pullRightMenu.add(new JCheckBoxMenuItem(“晚安!再见!“

27、);mb.add(fileMenu); setJMenuBar(mb); ,总结 2-1,Java 基本类是作为 AWT 的扩展而开发的 Swing 是 JFC 下的一组类,提供轻量级可视化组件,可用于创建美观的 GUI Swing 中的容器有两类:顶级容器、中间容器 通过 Swing标签既可以显示文本,也可以显示图像,总结 2-2,JTextComponent是Swing文本组件的根类 Swing中用于选择性输入的常用组件有:JCheckBox、JRadioButton、JList、JComboBox 菜单是 GUI 中非常有用的一部分,自学指导,Java技术内幕 swing这一章; 教材:264-273 实验任务: 8-5,8-6,8-8,8-9,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 往来文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报