Java语言程序设计:JAVA_10-图形化用户界面设计_第1页
Java语言程序设计:JAVA_10-图形化用户界面设计_第2页
Java语言程序设计:JAVA_10-图形化用户界面设计_第3页
Java语言程序设计:JAVA_10-图形化用户界面设计_第4页
Java语言程序设计:JAVA_10-图形化用户界面设计_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第10章章 图形界面图形界面 图形化用户界面设计图形化用户界面设计第第10章章 图形界面图形界面 JFC简介简介JFC(Java Foundation Classes,Java基础类库)是Java平台的一个重要组成部分,为开发GUI(Graphics User Interface)提供组件和服务。 包括5个部分的API: AWT (Abstract Windowing Toolkit抽象窗口工具集) 、Java 2D(二维图形工具)、Accessibility(高级访问工具)、Drag & Drop(拖放功能)和Swing(提供独立于运行平台的GUI构造框架)。 第第10章章 图形界

2、面图形界面 AWT简介简介 由于Java程序是跨平台的,因此AWT类库中的各种操作被定义成在一个“抽象窗口”中进行。使得利用AWT开发的GUI满足可移植性。 AWT:Abstract Windowing Toolkit抽象窗口工具集。所有与图形界面有关的类都放在java.awt包中。 第第10章章 图形界面图形界面 Java Swing简介简介Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。工具包中所有的包都是以swing作为名称,例如: javax.swing, javax.swing.eventS

3、wing与AWT的最大区别最大区别是采用本地代码,独立于运行平台,在不同平台有一致的look&feel,因此开发GUI时更常用的是Swing。 第第10章章 图形界面图形界面 javax.swingjavax.swing包中包中JComponentJComponent类是类是java.awtjava.awt包中包中ContainerContainer类的一个直接子类、是类的一个直接子类、是java.awtjava.awt包中包中ComponentComponent类的类的一个间接子类,学习一个间接子类,学习GUIGUI编程主要是学习掌握使用编程主要是学习掌握使用ComponentCom

4、ponent类类的一些重要的子类。的一些重要的子类。(1) Component类的子类类的子类或间接子类创建的对象称为一个或间接子类创建的对象称为一个组件组件。(2) Container的子类的子类或间接子类创建的对象称为一个或间接子类创建的对象称为一个容器容器。(3)可以可以向容器添加组件向容器添加组件。Container类提供了一个类提供了一个public方法:方法:add( ),一个容器可以调用这个方法将组件添加到该容器中。,一个容器可以调用这个方法将组件添加到该容器中。(4)容器调用容器调用removeAll()方法可以移掉容器中的全部组件;调用方法可以移掉容器中的全部组件;调用rem

5、ove(Component c)方法可以移掉容器中参数方法可以移掉容器中参数c指定的组件。指定的组件。(5) 容器本身也是一个组件,因此可以把容器本身也是一个组件,因此可以把一个容器添加到另一个一个容器添加到另一个容器容器中实现容器的嵌套。中实现容器的嵌套。(6)每当容器添加新的组件或移掉组件时,应当让容器调用每当容器添加新的组件或移掉组件时,应当让容器调用validate()方法,以保证容器中的组件能正确显示出来。方法,以保证容器中的组件能正确显示出来。第第10章章 图形界面图形界面 1、组件与容器组件与容器1 组件:文本框、按钮、单选框、窗体、对话框等。2 容器:可以包含其他组件的组件包含

6、其他组件的组件称为容器。几乎所有组件都是容器,但一般只有窗体(Frame)系列、面板(Panel)系列等实际作为容器来用。3 组件必须放在容器内才能显示。第第10章章 图形界面图形界面 javax.swing包提供了功能更为强大的用来设计GUI的类。java.awt和javax.swing包中一部分类的层次关系的UML类图如图。 第第10章章 图形界面图形界面 2、窗口窗口 Java提供的提供的JFrame类的实例是一个底层容器,即类的实例是一个底层容器,即通常所称的窗口。其他组件必须被添加到底层容器中,通常所称的窗口。其他组件必须被添加到底层容器中,以便借助这个地层容器和操作系统进行信息交互

7、。以便借助这个地层容器和操作系统进行信息交互。 JFrameJFrame类是类是ContainerContainer类的间接子类。当需要一个类的间接子类。当需要一个窗口时,可使用窗口时,可使用JFrameJFrame或其子类创建一个对象。或其子类创建一个对象。 第第10章章 图形界面图形界面 JFrameJFrame常用方法常用方法 JFrameJFrame()() 创建一个无标题的窗口。创建一个无标题的窗口。JFrame(StringJFrame(String s) s) 创建标题为创建标题为s s的窗口。的窗口。public void setBounds(int a,int b,int w

8、idth,intpublic void setBounds(int a,int b,int width,int height height 设置窗口的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。public void setSize(int width,intpublic void setSize(int width,int height) height) 设置窗口的大小。public void setLocation(int x,intpublic void setLocation(int x,int y) y) 设置窗口的位置,默

9、认位置是(0,0)。public void setVisible(booleanpublic void setVisible(boolean b) b) 设置窗口是否可见,窗口默认是不可见的。public void setResizable(booleanpublic void setResizable(boolean b b) ) 设设置窗口是否可调整大小,默认可调整大小。public void dispose()public void dispose() 撤消当前窗口,并释放当前窗口所使用的资源。public void setExtendedState(intpublic void set

10、ExtendedState(int state) state) 设置窗口的扩展状态.第第10章章 图形界面图形界面 JFrameJFrame常用方法常用方法 public void setDefaultCloseOperation(intpublic void setDefaultCloseOperation(int operation) operation) 该方法用来设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。参数operation取JFrame类中的下列int型static常量,程序根据参数operation取值做出不同的处理:DO_NOTHING_ON_CLOSE 什么也不做

11、。 HIDE_ON_CLOSE 隐藏当前窗口。DISPOSE_ON_CLOSE 隐藏当前窗口,并释放窗体占有的其它资源。EXIT_ON_CLOSE 结束窗口所在的应用程序。第第10章章 图形界面图形界面 11import javax.swing.*;import java.awt.*;public class Example9_1 public static void main(String args) JFrame window1=new JFrame(第一个窗口); JFrame window2=new JFrame(第二个窗口); Container con=window1.getCon

12、tentPane(); con.setBackground(Color.yellow) ; window1.setBounds(60,100,188,108); window2.setBounds(260,100,188,108); window1.setVisible(true);window1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); window2.setVisible(true); window2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 第第10章章 图形界面图形界面 菜

13、单条、菜单、菜单项菜单条、菜单、菜单项 1 1菜单条菜单条 JComponent类的子类JMenubar负责创建菜单条,JFrame类的方法setJMenuBar(JMenuBarsetJMenuBar(JMenuBar bar) bar) 该方法将菜单条添加到窗口的顶端 2 2菜单菜单 JComponent类的子类JMenu负责创建菜单, 主要方法有以下几种: public void add(JMenuItem public void add(JMenuItem item) item)向菜单增加由参数item指定的菜单选项。 public JMenuItem getItem(intpubli

14、c JMenuItem getItem(int n) n) 得到指定索引处的菜单选项。 public int getItemCountpublic int getItemCount()() 得到菜单选项的数目。3.3.菜单项菜单项 JComponent类的子类JMenuItem负责创建菜单项, 主要方法有以下几种: JMenuItem(StringJMenuItem(String s) s) 构造有标题的菜单项。 JMenuItem(StringJMenuItem(String text, Icon icon) text, Icon icon) 构造有标题和图标的菜单项 public void

15、 setAccelerator(KeyStroke keyStrokepublic void setAccelerator(KeyStroke keyStroke) ) 为菜单项设置快捷键。第第10章章 图形界面图形界面 菜单条、菜单、菜单项菜单条、菜单、菜单项 4嵌入子菜单嵌入子菜单 JMenu是JMenuItem的子类,因此菜单本身也是一个菜单项,当把一个菜单看作菜单项添加到某个菜单中时,称这样的菜单为子菜单。5菜单上的图标菜单上的图标 为了使菜单项有一个图标,可以用图标类Icon声明一个图标,然后使用其子类ImageIcon类创建一个图标,如:Icon icon = new ImageI

16、con(a.gif);然后菜单项调用setIcon(Icon icon) 方法将图标设置为icon。第第10章章 图形界面图形界面 14import javax.swing.*;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;public class WindowMenu extends JFrame JMenuBar menubar; JMenu menu,subMenu; JMenuItem itemLiterature,itemCooking; public WindowMenu() public Windo

17、wMenu(String s,int x,int y,int w,int h) init(s); setLocation(x,y); setSize(w,h); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 第第10章章 图形界面图形界面 15 void init(String s) setTitle(s); /设置窗口的标题 menubar=new JMenuBar(); menu=new JMenu(菜单); subMenu=new JMenu(体育话题); itemLiterature=new J

18、MenuItem(文学话题,new ImageIcon(a.gif); itemCooking=new JMenuItem(烹饪话题,new ImageIcon(b.gif); itemLiterature.setAccelerator(KeyStroke.getKeyStroke(A); itemCooking.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK); menu.add(itemLiterature); menu.addSeparator(); /在菜单之间增加分隔线 menu.add

19、(itemCooking); menu.add(subMenu); subMenu.add(new JMenuItem(足球,new ImageIcon(c.gif); subMenu.add(new JMenuItem(篮球,new ImageIcon(d.gif); menubar.add(menu); setJMenuBar(menubar); 第第10章章 图形界面图形界面 16public class Example9_2 public static void main(String args) WindowMenu win=new WindowMenu(带菜单的窗口,20,30,2

20、00,190); 第第10章章 图形界面图形界面 3、常用组件与布局常用组件与布局 可以使用可以使用JComponentJComponent的子类的子类JTextFieldJTextField创建各种组创建各种组件。利用组件可以完成应用程序与用户的交互及事件件。利用组件可以完成应用程序与用户的交互及事件处理等。处理等。 第第10章章 图形界面图形界面 常用组件常用组件 1文本框:由JComponent的子类JTextField创建文本框。2文本区:由JComponent的子类JTexArea创建文本区。3按钮:由JComponent的子类JButton类用来创建按钮。4标签:由JCompone

21、nt的子类JLabel类用来创建标签。5选择框:由JComponent的子类JCheckBox类用来创建选择框。6单选按钮:由JComponent的子类JRadioButton类用来创建单项选择框。7下拉列表:由JComponent的子类JComboBox类用来创建下拉列表。8密码框:由JComponent的子类JPasswordField创建密码框。可以使用setEchoChar(char c)重新设置回显字符 。调用char getPassword()方法可以返回实际的密码。第第10章章 图形界面图形界面 文本框JTextField和文本区JTextArea单行文本框 JTextField

22、和多行文本区域JTextArea,它们都是JTextComponent的子类。 JTextField类的构造方法类的构造方法有四种: public JTextField():构造一个新的单行文本输入框; public JTextField(int columns):构造一个指定长度的单行文本输入框; public JTextField(String text):构造一个指定初始内容的单行文本输入框; public JTextField(String tex, int columns):构造一个指定长度、指定初始内容的单行文本输入框。第第10章章 图形界面图形界面 JTextArea类类: pu

23、blic JTextArea():构造一个多行文本输入框; public JTextArea(int rows, int columns):构造一个指定长度和宽度的多行文本输入框,两个参数分别为长度和宽度; public JTextArea(String text):构造一个显示指定文字的多行文本输入框; public JTextArea(String text, int rows, int columns):构造一个指定长度和宽度,并显示指定文字的多行文本输入框; public JTextArea(String text, int rows, int columns, int scrollb

24、ars): Scrollbars用于指定滚动条的显示形式,缺省值为SCROLLBARS_BOTH。第第10章章 图形界面图形界面 其他方法其他方法: public void append(String str):在文本尾部增加文本; public void insert(String str, int pos):在指定位置插入文本; public void replaceRange(String str, int start, int end):替换某些文本。JTextField和和JTextArea共有的共有的: public String getText():得到组件中的文本; publi

25、c String getSelectedText():得到组件中当前被选中的的文本; public void selectAll():选择整个文本。第第10章章 图形界面图形界面 第第10章章 图形界面图形界面 按钮JButton构造方法:构造方法: public JButton():构造一个没有提示文字的按钮; public JButton(String s):构造一个以给定字符串为提示文字的按钮。 例如,下面的语句定义一个“OK”按钮: Button b = new JButton(OK);获得或修改按钮对象的设置获得或修改按钮对象的设置:p public String getLabel(

26、):获得按钮上的提示文字p public void setLabel(String s):改变按钮上的提示文字p setActionCommand(String s):为按钮设置一个命令名,这个命令名在响应事件时可能会用到,缺省的命令名为按钮上的提示文字。第第10章章 图形界面图形界面 标签JLabel 标签是最简单的组件,实质上就是一段文字,不生成动作事件。JLabel类中定义了三种构造方法构造方法:public JLabel():构造一个空的标签,不显示任何内容。public JLabel(String text):构造建立一个以String为内容的标签。public JLabel(Str

27、ing text,int alignment):定义一个标签。参数alignment代表一个给定的对齐方式,可以是靠左LEFT 、靠右RIGHT和居中CENTER ,缺省设置是靠左。下面的语句定义一个居中的Name标签: Label l1 = new JLabel(Name, CENTER);第第10章章 图形界面图形界面 JLabel类还定义了一些方法来获得或修改标签对象获得或修改标签对象的设置的设置: public String getText():获得标签上的文字。 public void setText(String text):修改标签上的文字。 public int getAlig

28、nment():获得标签的对齐方式。 public void setAlignment(int alignment):设置标签的对齐方式。第第10章章 图形界面图形界面 4、选择框(JCheckBox)与单选按钮(JRadioButton) 创建选择框可以使用下面几种构造方法构造方法:public JCheckbox():创建一个没有提示文字的复选框条目,未被选中public JCheckbox(String label):构造一个以label为提示文字的复选框条目,未被选中。public JCheckbox(String label, boolean state):构造一个以label为提示

29、文字的复选框条目,初始状态由state指定。第第10章章 图形界面图形界面 其他方法:其他方法:public boolean getState():确定复选框是否被选中public void setState(boolean):改变选中状态创建单选按钮创建单选按钮:public JRadioButton(String label, ButtonGroup group,boolean state);其他方法其他方法:public boolean getState():获取当前选中状态第第10章章 图形界面图形界面 下拉列表(JComboBox) 构造方法构造方法:public JComboBox

30、();添加列表项添加列表项:public synchronized void addItem(String item); 其他方法其他方法:public void insert(String item, int index):在指定位置增加条目。 public void remove(int position); public void remove(String item):删除指定的条目 public void removeAll():删除所有条目。 public String getSelectedItem(); public int getSelectedIndex():返回被选中条目

31、第第10章章 图形界面图形界面 29组件颜色与字体的设置组件颜色与字体的设置Color类与类与Font类分别定义了一些颜色、字体,类分别定义了一些颜色、字体,可以创建新的颜色与字体。可以创建新的颜色与字体。Color c=new Color(r,g,b);Font f=new Font();第第10章章 图形界面图形界面 1. 组件的颜色public void setBackground(Color c):设置背景色public void setForeground(Color c):设置前景色public Color getBackground():获取背景色public Color get

32、Foreground():获取前景色第第10章章 图形界面图形界面 2. 组件的字体public Font getFont():获取组件上的字体public void setFont(Font f):设置字体Font 构造方法:public Font(String name, int style, int size)系统字体库获取:String names=GraphicsEnvironment. getLocalGraphicsEnvironment().getAvailableFontFamilyNames();或:String names=Toolkit.getDefaultToolki

33、t().getFontList();第第10章章 图形界面图形界面 3. 组件的大小和位置public void setSize(int width, int height):设置大小public Dimension getSize():获取大小public void setLocation(int x, int y):设置位置public Point getLocation():获取位置点public setBounds(int x, int y, int width, int height):设置边界(常用于null布局)public Rectangle getBounds():获取边界矩

34、形4. 激活和可见性public void setEnabled(boolean b):设置是否可用public void setVisible(boolean b):设置是否可见第第10章章 图形界面图形界面 33import java.awt.*;import javax.swing.*;public class ComponentInWindow extends JFrame JTextField text; JButton button; JCheckBox checkBox1,checkBox2,checkBox3; JRadioButton radio1,radio2; Butto

35、nGroup group; JComboBox comBox; JTextArea area; public ComponentInWindow() init(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 第第10章章 图形界面图形界面 34void init() setLayout(new FlowLayout(); add(new JLabel(文本框:); text=new JTextField(10); add(text); add(new JLabel(按钮:); button=new JBu

36、tton(确定); add(button); add(new JLabel(选择框:); checkBox1 = new JCheckBox(喜欢音乐); checkBox2 = new JCheckBox(喜欢旅游); checkBox3 = new JCheckBox(喜欢篮球); add(checkBox1); add(checkBox2); add(checkBox3); 第第10章章 图形界面图形界面 35 add(new JLabel(单选按钮:); group = new ButtonGroup(); radio1 = new JRadioButton(男); radio2 =

37、new JRadioButton(女); group.add(radio1); group.add(radio2); add(radio1); add(radio2); add(new JLabel(下拉列表:); comBox = new JComboBox(); comBox.addItem(音乐天地); comBox.addItem(武术天地); comBox.addItem(象棋乐园); add(comBox); add(new JLabel(文本区:); area = new JTextArea(6,12); add(new JScrollPane(area); 第第10章章 图形界

38、面图形界面 36public class Example9_3 public static void main(String args) ComponentInWindow win=new ComponentInWindow(); win.setBounds(100,100,310,260); win.setTitle(常用组件); 第第10章章 图形界面图形界面 常用容器常用容器 JComponent JComponent是是ContainerContainer的子类,因此的子类,因此JComponentJComponent子类创建的组件也子类创建的组件也都是容器。容器经常用来添加组件。都是

39、容器。容器经常用来添加组件。JframeJframe是底层容器,本节提到的容是底层容器,本节提到的容器被习惯地称做中间容器,中间容器必须被添加到底层容器中才能发挥器被习惯地称做中间容器,中间容器必须被添加到底层容器中才能发挥作用。作用。 1 1JPanelJPanel 面板面板: :使用使用JPanelJPanel创建面板,再向这个面板添加组件,然后创建面板,再向这个面板添加组件,然后把这个面板添加到其它容器中。把这个面板添加到其它容器中。JPanelJPanel面板的默认布局是面板的默认布局是FlowLayoutFlowLayout布布局。局。 2 2滚动窗格滚动窗格JScrollPaneJ

40、ScrollPane: :可以将文本区放到一个滚动窗格中。可以将文本区放到一个滚动窗格中。 JScorollPane scroll=new JScorollPane(new JTextAreaJScorollPane scroll=new JScorollPane(new JTextArea(); (); 3 3拆分窗格拆分窗格JSplitPaneJSplitPane: :窗格有两种类型:水平拆分和垂直拆分窗格有两种类型:水平拆分和垂直拆分JSplitPaneJSplitPane的两个常用的构造方法:的两个常用的构造方法: JSplitPane(intJSplitPane(int a,Comp

41、onent b,Component c) a,Component b,Component c) JSplitPane(int a, boolean JSplitPane(int a, boolean b,Component c,Component d) b,Component c,Component d) 4 4JLayeredPaneJLayeredPane分层窗格分层窗格: :分层窗格使用分层窗格使用add(Jcomponent com, intadd(Jcomponent com, int layer); layer);添加组件添加组件comcom,并指定,并指定comcom所在层所在层

42、 public void setLayer(Component c,intpublic void setLayer(Component c,int layer) layer)可以重新设置组件可以重新设置组件c c所所在的层在的层public int getLayer(Componentpublic int getLayer(Component c) c)可以获取组件可以获取组件c c所在的层数。所在的层数。 第第10章章 图形界面图形界面 常用布局常用布局 容器可以使用方法容器可以使用方法setLayout(布局对象布局对象);设置自己的布局设置自己的布局, ,控制组件在控制组件在容器中的位置

43、。容器中的位置。 1 1FlowLayoutFlowLayout布局布局 : : 1)1)创建创建布局对象布局对象 FlowLayout flow=new FlowLayoutFlowLayout flow=new FlowLayout();(); 2)容器容器concon使用布局对象使用布局对象con.setLayout(flowcon.setLayout(flow);); 3)con 3)con可以使用可以使用ContainerContainer类提供的类提供的addadd方法方法将组件顺序地添加到容器中将组件顺序地添加到容器中; ; FlowLayout FlowLayout布局对象调用

44、相应的方法可以重新设置布局的对齐方式等布局对象调用相应的方法可以重新设置布局的对齐方式等. .布局原则是将组件从左向右、从上向下排列,如果本行放不下这个组件,就放入下一行。 第第10章章 图形界面图形界面 39import java.awt.* ;import javax.swing.*;public class ExGui private JFrame f ;private JButton b1 ;private JButton b2 ;public static void main( String args )ExGui guiwindow = new ExGui( );guiWindow

45、.go( ) ;public void go( )f = new JFrame(“GUI example”) ;f.setLayout( new FlowLayout( ) ;b1 = new JButton(“Press Me”);b2 = new JButton(“Dont Press Me “);f.add( b1) ;f.add(b2);f.pack( );f.setVisible(true) ;GUI examplePress MeDont Press Me第第10章章 图形界面图形界面 常用布局常用布局 2 2BorderLayoutBorderLayout布局布局 : : Win

46、dow型容器的默认布局。型容器的默认布局。 BorderLayout将容器分为将容器分为5个区域,分别使用地理上的方向个区域,分别使用地理上的方向NORTH、SOUTH、WEST、EAST和和CENTER静态常量来表静态常量来表示,其中前四个方向占据容器的四边,而示,其中前四个方向占据容器的四边,而Center方向占据剩下方向占据剩下的空白,中间的区域最大。的空白,中间的区域最大。 使用使用BorderLayoutBorderLayout布局的容器布局的容器concon,可以使用,可以使用addadd方法将一方法将一个组件个组件b b添加到中心区域:添加到中心区域: con.add(b,Bor

47、derLayout.CENTER); 或或 con.add(BorderLayour.CENTER,b); 第第10章章 图形界面图形界面 3 3CardLayoutCardLayout 布局布局 用用CardLayout 的容器可以容纳多个组件,这些组件被层叠放如容器中,的容器可以容纳多个组件,这些组件被层叠放如容器中,最先加入容器的是第一张最先加入容器的是第一张(在最上面在最上面),依次向下排序。依次向下排序。 使用使用CardLayoutCardLayout的一般步骤如下:的一般步骤如下: 1)1)创建创建CardLayoutCardLayout对象对象 CardLayout card=

48、new CardLayout(); 2) 2)为容器设置布局为容器设置布局 con.setLayout(card); 3) 3)容器调用容器调用add(String s,Component b)将组件将组件b b加入容器,并给出加入容器,并给出了显示该组件的代号了显示该组件的代号s s。 4)4)布局对象布局对象cardcard用用CardLayoutCardLayout类提供的类提供的show()show()方法,显示容器方法,显示容器concon中组件中组件代号为代号为s s的组件:的组件:card.show(con,s);常用布局常用布局 另外显示组件的方法还有:另外显示组件的方法还有:

49、 card.first(con) card.last(con) card.next(con) card.previous(con) 第第10章章 图形界面图形界面 常用布局常用布局 4 4GridLayoutGridLayout布局布局 : : GridLayoutGridLayout布局策略是把容器划分成若干行乘若干列的网格区域,布局策略是把容器划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小格中。组件就位于这些划分出来的小格中。 GridLayoutGridLayout布局编辑器的一般步布局编辑器的一般步骤如下:骤如下: 1)1)创建布局对象,指定划分网格的行数创建布局对象,指定

50、划分网格的行数m m和列数和列数n n GridLayout grid=new new GridLayout(10,8); 2) 2)使用使用GridLayoutGridLayout布局的容器调用方法布局的容器调用方法add(Component c)将组件将组件c c加加入容器。入容器。 第第10章章 图形界面图形界面 43import javax.swing.*;import java.awt.*;class WinGrid extends JFrame GridLayout grid; WinGrid() grid=new GridLayout(12,12); setLayout(grid

51、); Label label=new Label1212; for(int i=0;i12;i+) for(int j=0;j=2) area.setText(鼠标连击,位置:+(+e.getX()+,+e.getY()+); 第第10章章 图形界面图形界面 2 2使用使用MouseMotionListenerMouseMotionListener接口可以处理以下两种操作触发的接口可以处理以下两种操作触发的鼠标事件,在事件源上拖动鼠标、在事件源上移动鼠标。鼠标事件,在事件源上拖动鼠标、在事件源上移动鼠标。 事件源注册监视器的方法是事件源注册监视器的方法是 addMouseMotionListe

52、ner(MouseMotionListener listener)。 MouseMotionListenerMouseMotionListener接口接口中有如下方法:中有如下方法: mouseDragged(MouseEventmouseDragged(MouseEvent) ) 负责处理拖动鼠标触发的鼠标事件。负责处理拖动鼠标触发的鼠标事件。 mouseMoved(MouseEventmouseMoved(MouseEvent) ) 负责处理移动鼠标触发的鼠标事件。负责处理移动鼠标触发的鼠标事件。4.5、MouseEvent事件事件 第第10章章 图形界面图形界面 4.6、焦点事件焦点事件

53、 1 1焦点事件源焦点事件源 : :组件可以触发焦点事件。 2 2注册监视器注册监视器: :组件可以使用 addFocusListener(FocusListener listener) 注册焦点事件监视器。 3 3FocusListener接口接口 : : 创建监视器的类必须要实现FocusListener接口,该接口有两个方法: public void focusGained(FocusEvent e) public void focusLost(FocusEvent e) 当发生FocusEvent事件时,监视器调用类实现的接口中的相应方法。 4 4组件也可调用 public boole

54、an requestFocusInWindow() 方法可以获得输入焦点。 第第10章章 图形界面图形界面 4.7、键盘事件键盘事件 当一个组件处于激活状态时,敲击键盘上一个键就导致这个当一个组件处于激活状态时,敲击键盘上一个键就导致这个组件触发键盘事件。组件触发键盘事件。1.1.某个组件使用某个组件使用addKeyListeneraddKeyListener方法注册监视器方法注册监视器。2.2.接口接口KeyListenerKeyListener中有如下方法:中有如下方法: public void keyPressed(KeyEvent e), public void keyTyped(Ke

55、yEvent e), public void KeyReleased(KeyEvent e) 3.3.相关方法:相关方法: public int getKeyCode()判断哪个键被按下、敲击或释放,返回一个键码值 。 getKeyChar()判断哪个键被按下、敲击或释放,返回键上的字符。第第10章章 图形界面图形界面 71public class Example9_12 public static void main(String args) Win win=new Win(); win.setTitle(输入序列号); win.setBounds(10,10,460,360); 通过处理键

56、盘事件来实现软件序列号的输入。通过处理键盘事件来实现软件序列号的输入。第第10章章 图形界面图形界面 72import java.awt.event.*;import javax.swing.*;public class Police implements KeyListener,FocusListener public void keyPressed(KeyEvent e) JTextField t=(JTextField)e.getSource(); if(t.getCaretPosition()=6) t.transferFocus(); public void keyTyped(Key

57、Event e) public void keyReleased(KeyEvent e) public void focusGained(FocusEvent e) JTextField text=(JTextField)e.getSource(); text.setText(null); public void focusLost(FocusEvent e)第第10章章 图形界面图形界面 73import java.awt.*;import javax.swing.*;public class Win extends JFrame JTextField text=new JTextField

58、3; Police police; JButton b; Win() setLayout(new FlowLayout(); police = new Police(); for(int i=0;i3;i+) texti=new JTextField(7); texti.addKeyListener(police); /监视键盘事件 texti.addFocusListener(police); add(texti); b=new JButton(确定); add(b); text0.requestFocusInWindow(); setVisible(true); setDefaultClo

59、seOperation(JFrame.EXIT_ON_CLOSE); 第第10章章 图形界面图形界面 744.8、多监听器、多监听器在同一个组件上注册多个监听器。在同一个组件上注册多个监听器。根据需要多次调用根据需要多次调用addXXXListener() 方法注册多个方法注册多个监听器。监听器。第第10章章 图形界面图形界面 75带有两个监听器的带有两个监听器的Framepublic class TwoListener implements MouseMotionListener, MouseListenerFrame f;TextField tf;public static void ma

60、in(String args)TwoListener two = new TwoListener( );two.go();第第10章章 图形界面图形界面 76public void go()f=new Frame(“Two Listener”);tf=new TextField(30);f.add(tf,”BorderLayout.SOUTH”);f.addMouseMotionListener(this);f.addMouseListener(this);/ These are MouseMotionListener eventspublic void mouseDragged(MouseEvent e)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论