威海职业学院情境4产品库存管理系统的界面实现bbb***(456)学习情境描述设计实现产品库存管理系统的用户登陆模块及主界面。aaa***(123)登录界面主界面所需知识容器与组件;布局管理器;事件处理机制;常用Swing组件的使用;重点及难点事件处理机制;常用Swing组件的使用;能力目标培养学生图形用户界面设计和实现的技能、阅读代码的能力、程序调试能力,养成良好的编码风格培养学生英语阅读能力和技术创新能力培养学生的自学能力、知识的融会贯通能力和动手实践能力了解图形用户界面程序用户图形用户界面多行文本框图形用户界面的组成组件单选按钮单行文本框标签复选按钮按钮组合框窗口面板容器组件与容器图形用户界面组件图形化显示与用户交互放在容器内容器能容纳其他组件和容器一种组件add()添加组件remove()移除组件GUI支持包java.awt包javax.swing包提供了大量地进行GUI设计所使用的类和接口Java语言进行GUI程序设计的基础由100%纯Java实现的,不依赖操作系统的支持使得Java的图形用户界面上了一个台阶AWT概述创建GUI通过java.awt包容器组件布局管理器字体事件图形和绘制方法包含AWT容器组件以图形表示的对象允许用户交互创建并构造用于选择新字体的对象用于用户和系统交互AWT包含内容使用AWT图形方法相对于窗口绘制图形定义GUI组件的位置AWT(重量级组件)awt包中主要类之间的关系Java.lang.objectAWTEventFontComponentGraphicsMenuComponent布局管理器类ContainerPanelWindowAppletFrameSwing概述创建GUI通过Javax.swing包Swing包含内容容器组件可改变的外观Java2D图形绘制包含Swing组件以图形表示的对象允许用户交互使用Java2D绘制图形可更换图形界面的风格Swing(轻量级组件,纯Java组件)Swing的类层次结构java.awt.Componentjava.awt.Containerjava.awt.Windowjava.awt.Framejavax.swing.JFramejavax.Dialogjavax.swing.JDialogjavax.swing.JWindowjava.awt.Appletjavax.swing.JAppletjavax.swing.Boxjavax.swing.JComponentSwing组件是Container类的直接或间接子类。任务1创建具有以下特征的窗口:自定义窗口的标题;窗口的大小不可变。标题最大化按钮失效创建图形用户界面的基本步骤选择外观布局管理器添加组件事件处理创建容器保存内容显示内容控制用户输入Swing外观的设置3-1Swing采用MVC设计范式:即“模型-视图-控制”。控制器视图模型Swing外观的设置3-2Swing采用可插入的外观感觉,使得程序在一个平台上运行时能够有不同的外观。Metal外观Motif外观Windows外观Swing外观的设置3-3publicstaticvoidmain(String[]args){//设定页面外观风格try{}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(InstantiationExceptione){e.printStackTrace();}catch(IllegalAccessExceptione){e.printStackTrace();}catch(UnsupportedLookAndFeelExceptione){e.printStackTrace();}UIManager.setLookAndFeel(“com.sun.Java.swing.plaf.windows.WindowsLookAndFeel”);//Windows风格UIManager.setLookAndFeel(“Javax.swing.plaf.metal.MetalLookAndFeel”);//Metal风格UIManager.setLookAndFeel(com.sun.Java.swing.plaf.motif.MotifLookAndFeel);//Motif风格UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());//设定当前平台外观风格Swing容器组件主窗口Swing应用程序创建容器设置容器大小(对框架及面板而言)设置容器可见度(对框架及面板而言)创建顶层容器顶层容器(每个应用程序中至少有一个)内容面板主要显示区域包含GUI中的可视组件常用容器—JFrame的使用JFrame的使用2-1向JFrame中添加组件的两种方式之一:用getContentPane()方法获得JFrame的内容面板,再对其加入组件:frame.getContentPane().add(childComponent)JFrame的使用2-2向JFrame中添加组件的两种方式之二:把组件添加到Jpanel之类的中间容器中,用setContentPane()方法把该容器置为JFrame的内容面板:JpanelcontentPane=newJpanel();……//把其它组件添加到Jpanel中;frame.setContentPane(contentPane);任务1:分析与实现importjavax.swing.*;importjava.awt.*;classGUIDemo1{{staticvoidsetLocaleLookAndFeel(){{try{{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(Exceptione){}}publicstaticvoidmain(String[]args){GUIDemo1.setLocaleLookAndFeel();//选择外观风格JFramef=newJFrame(第一个Java窗口);//创建容器f.setSize(300,300);//设置容器大小f.setVisible(true);//设置容器可见性}}任务2实现如下图所示的图形用户界面。布局管理器(LayoutManager)为了实现跨平台的特性并获得动态的布局效果,Java将容器内的所有组件安排给“布局管理器”负责管理。布局管理器管理当窗口移动或调整大小后组件如何变化等功能。容器可以通过选择不同的布局管理器来决定布局。setLayout()方法可以设置容器的布局管理器。FlowLayout—流式布局管理器FlowLayout是JPanel的默认布局管理器左右上下默认居中对齐FlowLayout使用示例importjava.awt.*;importjavax.swing.*;classFlowLayoutDemoextendsJFrame{JButtonjb1,jb2,jb3,jb4,jb5;publicFlowLayoutDemo(Stringtitle){super(title);}voidinit(){Containerc=frame.getContentPane();jb1=newJButton(第一个按钮);jb2=newJButton(第二个按钮);jb3=newJButton(第三个按钮);jb4=newJButton(第四个按钮);jb5=newJButton(第五个按钮);c.setLayout(newFlowLayout());//设置布局管理器c.add(jb1);c.add(jb2);c.add(jb3);c.add(jb4);c.add(jb5);}publicstaticvoidmain(String[]args){FlowLayoutDemoflowlayout=newFlowLayoutDemo(FlowLayoutDemo);flowlayout.init();flowlayout.pack();flowlayout.setVisible(true);}}BorderLayout—边界布局管理器NorthEastWestSouthCenter当容器大小变化时,组件的相对位置不变,大小发生变化BorderLayout—边界布局管理器向BorderLayout布局的容器中添加组件时,可使用add(ComponentcompObj,Objectregion)方法。组件对象表示区域的静态常量实战:实现前面BorderLayout示例界面。BorderLayout—边界布局管理器思考:横向、纵向改变BorderLayout布局的容器大小,总结组件的变化规律。GridLayout—网格布局管理器将容器的空间划分成若干行、列的网格左右上下组件大小相同Swing常用容器—JPanel的使用JPanel面板是一种可以添加到其他容器中使用的容器组件。可用javax.swing.BorderFactory类中的方法获得Swing常用组件的使用--JButtonJButton(按钮)是一个常用组件,可以显示文本或图标,点击时能够响应单击事件。任务2:分析与实现2-1设置了边界的JPanel面板作为内容面板两个按钮添加到Jpanel面板中任务2:分析与实现2-2importjava.awt.*;importjavax.swing.*;classJPanelDemoextendsJPanel{JButtonb1=newJButton(JPanel);JButtonb2=newJButton(Demo);publicJPanelDemo(){setBackground(Color.white);add(b1);add(b2);}publicstaticvoidmain(String[]args){JPaneljp=newJPanelDemo();jp.setBorder(BorderFactory.createTitledBorder(Hello,Border));JFrameframe=newJFrame(JPanelDemo);frame.setSize(200,150);frame.setContentPane(jp);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}任务3设计实现一个简单的计算器界面,如下图所示。容器的嵌套一个包含了多个组件的容器本身可以作为一个组件加到另一个容器中去,容器中再添加容器,这样就形成了容器的嵌套。一个Jpanel包含一个标签一个Jpanel包含5个组件Swing常用组件的使用--JLabelJLabel(标签)是用户不能修改只能查看的文本/图像显示区域。Swing常用组件的使用--JTextFieldJTextField(单行文本域)是一个单行条形文本区,能够接收输入、显示输出。Swing常用组件的使用--JPasswordFieldJPasswordField(口令框)接受用户的输入,但不会真正显示出来,而是显示回显符。JPasswordField实例实战:实现上面的图形用户界面。Swing常用组件的使用--JTextAreaJTextArea(多行文本框)可以输入或输出多行文本。JTextArea的换行方式手动换行自动换行:通过设置换行属性来避免手动换行textArea.setLineWrap(true);增加滚动条:通过把文本区插入到一个滚动窗格中来实现。JScrollPanescrollPane=newJScrollPane(textArea);任务3:分析与实现importjava.awt.*;import