版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西南科技大学网络教育系列课程 高级语程序设计(Java),第十章基于Swing的图形用户界面设计,AWT组件与SWING组件概述,Java在初期借助一种窗口开发类库,叫作AWT(Abstract Windows Toolkit,抽象窗口工具箱)来达到在图形接口上平台独立性。,AWT处理用户界面元素的方法 把用户界面元素的创建和行为委托给目标平台(Windows、Macintosh、Linux等)上的本地GUI工具(Peers,对等组件)进行处理。 Peers是本地GUI组件,由AWT来操控,Peers对程序开发者是隐而不见的,各平台所产生的peers与各平台有关 。,重量组件和轻量组件 与本地
2、对等组件相关联的组件(AWT组件)就被称为重量组件。 不依赖本地对等组件的组件(Swing组件)就被称为轻量组件。 重量组件具有平台不一致性。 轻量组件在重量容器的窗口中绘制,背景可以是透明的。,AWT与Swing,AWT 粗糙、不美观 平台不一致,“一次编写,到处调试” 运行效率较低,不适合复杂界面的程序 开发速度较快,Swing 更丰富、更方便的用户界面元素集合 对底层平台的依赖更少,和平台有关的bug也就更少 给不同平台上的用户一致的感觉 swing组件大部分是轻量组件,没有对等组件,Swing并没有完全代替AWT,JComponent类的部分子类以及JFrame类和JDialog类,j
3、avax.swing包中JComponent(轻组件)类是java.awt包中Container类的一个直接子类、Componenet类的一个间接子类。javax.swing包中的JFame类和JDialog类分别是java.awt包中Frame类和Dialog类的直接子类、Window类的间接子类。,两个基本概念 组件(component):Java把由Component类的子类或间接子类创建的对象称为一个组件,是图形用户界面中的可见部分,如按钮、标签。 容器(container): Java把由Container的子类或间接子类创建的对象称为一个容器,是图形用户界面中容纳其它组件的部分,如
4、窗体。 一个容器中可容纳一个或多个组件,也可容纳其他容器。,认识几个方法 add( ):将组件添加到该容器中。 removeAll() :移掉容器中的全部组件。 remove(Component c) 移掉容器中参数指定的组件。 validate():每当容器添加新的组件或移掉组件时,调用该方法以保证容器中的组件能正确显示出来。,组件的三要素 内容,如按钮的状态、文本框中的文本 外观显示,如组件的颜色、大小、可见性 行为,组建对外部刺激(事件)的反应 三要素之间的是相互关联的,如按钮组件,Swing的结构 Swing采用MVC(模型 - 视图 - 控制)设计模式 MVC的基本思想就是将一个GU
5、I组件分成三个部分:模型部分 存储内容(完整的)视图部分 显示内容(完整或不完整的)控制部分 处理用户事件 模型必须实现改变和发现内容的方法 模型是完全不可见的,显示存储在模型中的数据是视图的工作,控制决定是否把外界的事件转化成对模型或视图的改变,例:用户在文本框中进行字符输入,例:用户在文本框中按下了光标键,每个组件都有一个包装类(如JButton),用来保存模型和视图。 在javax.swing包中提供了超过250个类,而其中有接近50个组件类(以J打头)。 javax.swing包中有四个最重要的类 JApplet、JFrame、JDialog和JComponent。 JFrame、JA
6、pplet、JDialog都是重组件 swing包是属于Java基础类(Java Foundation Classes,JFC)的一部分。,JFrame窗体,JFrame的特性 JFrame类其子类创建的对象是窗体。 JFrame类或子类创建的对象是重量容器。 不可以把组件直接添加到JFame窗体中,应当把组件添加到内容面板中。 不能为JFame窗体设置布局,应为JFame窗体的内容面板设置布局。 JFame窗体通过调用getContentPane()方法得到它的内容面板。,JFrame类常用方法: 构造方法 JFrame() :可以创建一个无标题的窗口。 JFrame(String s) :
7、创建一个标题为s的窗口。 常用方法 public void setBounds(int a,int b,int width,int height) 窗口调用该方法可以设置出现在屏幕上时的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。,public void setSize(int width,int height):设置窗口的大小,窗口在屏幕出现是默认位置是(0,0)。 public void setVisible(boolean b):设置窗口是可见还是不可见,窗口默认是不可见的。 public void setResizable(b
8、oolean b):设置窗口是否可调整大小,窗口默认是可调整大小的。,public void setDefaultCloseOperation(int operation) :设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。 其中的参数operation取下列有效值: DO_NOTHING_ON_CLOSE:什么也不做。 HIDE_ON_CLOSE:隐藏当前窗口。 DISPOSE_ON_CLOSE:隐藏当前窗口,并释放窗体占有的其它资源。 EXIT_ON_CLOSE:结束窗体所在的应用程序。,菜单组件,Swing菜单由菜单条(JMenuBar)、菜单(JMenu)和菜单项(JMenuIt
9、em)构成。 菜单条是所有菜单和菜单项的根(容器)。,需要注意的是,只能向窗口添加一个菜单条,JMenuBar 菜单条 JMenuBar是JComponent类的子类,负责创建菜单条。 JMenuBar menuBar=new JMenuBar(); 将菜单条放置到JFrame窗口中: public void setJMenuBar(JMenuBar menubar);,JMenu 菜单 JMenu是JComponent类的间接子类,负责创建菜单。 pulbic JMenu():建立一个没有标题的菜单。 pulbic JMenu(String s):建立一个指定标题菜单,标题由参数s确定。,例
10、如: 创建一个名为“Edit”的菜单,并添加到菜单条中。 JMenu editMenu=new JMenu(“Edit”); menuBar.add(editMenu);,常用方法 public void add(MenuItem item):向菜单增加由参数item指定的菜单选项对象。 public void add(String s):向菜单增加指定的选项。 public JMenuItem getItem(int n):得到指定索引处的菜单选项。 public int getItemCount():得到菜单选项数目。,JMenuItem 菜单项 JMenu是JComponent类的间接子
11、类,负责创建菜单项。 public JMenuItem(String s):构造有标题的菜单项。 public JMenuItem(String text, Icon icon):构造有标题和图标的菜单项。 创建图标对象 Icon icon=new ImageIcon(“图标文件名”);,菜单项将被放在菜单里。例如:JMenuItem pasteItem=new JMenuItem(“Paste”);editMenu.add(pasteItem);,主要方法 public void setEnabled(boolean b):设置当前菜单项是否可被选择 public String getLab
12、el():得到菜单选项的名字。 public void setAccelerator(KeyStroke keystroke): 为菜单项设置快捷键。 public static KeyStroke getKeyStroke(int keyCode, int modifiers) :返回KeyStroke对象。,keyCode取值范围: KeyEvent.VK_A KeyEvent.VK_Z,modifiers取值:InputEvent.ALT_MASKInputEvent .CTRL_MASKInputEvent .SHIFT_MASK,嵌入JMenu子菜单 菜单项本身还可以是一个菜单,称这
13、样的菜单项为子菜单。,JMenu editMenu = new JMenu(“Edit”); JMenu optionsMenu = new JMenu(“Options”); editMenu.add(optionsMenu);,作用 指定各个视图组件在窗口中的分布位置,实现动态布局。 有助于创建复合式的复杂界面,一个复合式界面由一些简单的基本界面组成。 优点 可重用性:基本界面可以被重用,组合成各种不同的复合式界面。 可扩展性:可以方便的扩展基本界面,从而创建更复杂的界面。 可维护性: 当复合式界面中的局部区域发生变化时,不会影响其它区域 。,布局设计,使用布局管理器来实现布局设计 布局管
14、理器是基于AWT的 布局管理器的类型 流布局管理器:FlowLayout 边界布局管理器:BoderLayout 卡片式布局管理器:CardLayout 网格布局管理器:GridLayout 盒式布局管理器:BoxLayout 布局管理让容器使用方法setLayout(布局对象)来设计自己的布局。,BorderLayout Window型容器的默认布局,比如Jframe类、JDialog类。 每个被BorderLayout管理的容器均被划分为五个区域:东(EAST) ,南(SOUTH),西(WEST),北(NORTH),中(CENTER)。 容器的每个区域,只能加入一个组件,如果试图加入多个组
15、件,其中只有一个组件是可见的。 对于东南西北这四个边界区域,如果,其中的某个区域没有用,它的大小将变为0,CENTER区域将扩展并占用该区域,构造方法 BorderLayout():构造一个间距为0的BorderLayout实例 BorderLayout(int hgap,int vgap):构造一个指定间距的BorderLayout实例 在BorderLayout布局管理器的管理下,组建必须通过add()方法加入到容器的五个命名区域之一,否则它们是不可见的。 方法:add(组件,区域),import java.awt.*; import javax.swing.*; public class
16、 BorderL public static void main(String args) JFrame f; JButton be,bw,bn,bs,bc; BorderL that=new BorderL(); f=new JFrame(“窗体); be=new JButton(“东”); bs=new JButton(“南); bw=new JButton(“西”); bn=new JButton(“北); bc=new JButton(“中心); f.getContentPane().add(be,East); f.getContentPane().add(bs,South); f.g
17、etContentPane().add(bw,West); f.getContentPane().add(bn,North); f.getContentPane().add(bc,Center); f.setSize(350,200);f.setVisible(true); ,FlowLayout 将组件按照加入的顺序逐个地放在容器中的一行上,一行放满后再另起一个新行。 每一行中的组件按布局指定的方式对齐方,默认情况下是居中对齐。 三种构造方法: FlowLayout() FlowLayout(int align) FlowLayout(int align,int hgap,int vgap)
18、,FlowLayout.LEFT, FlowLayout.RIGHT, FlowLayout.CENTER(默认),hgap:垂直间距,vgap:水平间距,默认值是5个像素,FlowLayout布局管理器不强行设定组件的大小,而是允许组件拥有自己希望的大小。 每个组件都有一个getPreferredSize()方法,容器布局管理器会调用此方法取得每个组件希望的大小。 FlowLayout布局是JPanle容器的默认布局管理器。,当容器中组件数增加时,就显得高低参差不齐,采用容器嵌套的方式,即把一个容器当作一个组件加入另一个容器,使这个容器的布局达到应用的需求,GridLayout 网格式的布局
19、管理器,它将容器空间划分成若干行乘若干列的网格,每个格放一个组件。 各组件按照从上到下,从左至右的顺序排列。 构造方法: GridLayout():创建一个只有一行的网格,列数根据实际需要而定 GridLayout(int rows,int cols):创建指定行、列的网格,rows和cols中的一个值可以为0 GridLayout(int rows,int cols,int hgap,int vgap),使用GridLayout布局设计的一般步骤: 使用GridLayout的构造方法创建布局对象,指定划分网格的行数和列数 使用GridLayout布局容器调用方发add将组件加入容器。 Gri
20、dLayout布局中每个网格都是相同大小并且强制组件与网格相同大小,CardLayout 卡式布局管理器,可以容纳多个组件,但是同一时刻容器只能从这些组件中选出一个来显示,被显示的组件占据容器的整个空间。 选项卡窗格(JTabbedPane)的默认布局是CardLayout。 在JTabbedPane中加入组件: add(String text,Component c); 指定和该组件c对应的选项卡的文本提示是text。,BoxLayout 用BoxLayout类可以创建盒式布局。 Box类创建的容器称作一个盒式容器,盒式容器的的默认布局是盒式布局,而且不允许更改盒式容器的布局。,行型盒式布局
21、 容器中组件的上沿在同一水平线上。 Box类的类方法createHorizontalBox()可以获得一个具有行型盒式布局的盒式容器 行型盒式容器中组件间的间距:Box类调用静态方法createHorizontalStrut(int width)可以得到一个不可见的水平Struct类型对象,称做水平支撑。,列型盒式布局 容器中组件的左沿在同一垂直线上。 Box类的类方法createVerticalBox()可以获得一个具有列型盒式布局的盒式容器。 列型盒式容器中组件间的间距:Box类调用静态方法createVertialStrut(int height)可以得到一个不可见的垂直Struct类型
22、对象,称做垂直支撑。,中间容器,用来添加组件的轻容器,称为中间容器。 JPanel 面板 JPanel类用来创建一个面板对象,可以向这个面板添加组件(直接使用add方法)。 使用时需要把这个面板添加到底层容器或其他中间容器中。 JPanel面板的默认布局是FlowLayout布局。 构造方法 JPanel():构造一个面板容器对象,JScrollPane滚动窗格 把一个组件放到一个滚动窗格中,然后通过滚动条来观察这个组件。 例如,JTextArea不自带滚动条,可把文本区放到一个滚动窗格中。 构造方法 JScrollPane(component c):构造一个滚动窗格。,JSplitPane拆
23、分窗格 被分成两部分的容器,拆分窗格有两种类型: 水平拆分:用一条拆分线把容器分成左右两部分,左面放一个组件,右面放一个组件,拆分线可以水平移动 垂直拆分:用一条拆分线分成上下两部分,上面放一个组件,下面放一个组件,拆分线可以垂直移动。,构造方法 JSplitPane(int a, Component b ,Component c): 构造一个拆分窗格 setDividerLocation(double position):拆分窗格设置拆分线的位置。,JLayeredPane分层窗格 如果添加到容器中的组件经常需要处理重叠问题,就可以将组件添加到JLayeredPane容器。 JLayered
24、Pane将容器分成5个层,容器使用 add(Jcomponent com, int layer); 添加组件com,并指定com所在的层。,layer取值: DEFAULT_LAYER:最底层 PALETTE_LAYER MODAL_LAYER POPUP_LAYER DRAG_LAYER:最上面的层,public void setLayer(Component c,int layer):重新设置组件c所在的层 public int getLayer(Component c):获取组件c所在的层数。,文件组件,JTextField文本框 用来建立文本框的,用户可以在文本框输入单行的文本。 构造
25、方法 JTextField(int x):创建文本框对象,可以在文本框中输入若干个字符,文本框的可见字符个数由参数x指定。 JTextField(String s) :创建文本框对象,则文本框的初始字符串为s,可以在文本框中输入若干个字符。,主要方法 public void setText(String s):设置文本框中的文本为参数s指定的文本。 public String getText() :获取文本框中的文本。 public void setEditable(boolean b) :指定文本框的可编辑性(默认为可编辑的)。 public void setHorizontalAlignm
26、ent(int alignment) :设文本在文本框中的对齐方式,其中alignment的有效值确定对齐方式,如:LEFT、CENTER、RIGHT。,JPasswordField 建立一个密码框对象 setEchoChar(char c):设置回显字符(默认的回显字符是*)。 char getPassword()方法获取密码框中的密码。,ActionEvent事件,基于委托的事件模型 事件的处理由事件的来源(source,对象) ,委托给一个或多个事件监听者(Event Listener)来处理(事件监听者就可视为一种处理事件的对象)。 组件激发事件,事件监听器监听并处理这一特定事件。 委
27、托的方法是调用组件的注册监听器方法addxxxListener(Event Listener),事件监听者 是一种处理事件的接口,定义于java.awt.event包中,在此包中也定义了各种事件类 当事件来源对象因用户的操作(鼠标、键盘等),系统会自动触发此事件类对象E,并通知所委托的事件监听者A(需要预先注册),然后事件监听者A中所定义的处理各种事件的方法便会处理此事件E的各种状况 。,事件结构 所有的事件动作都开始于java.util包中的EventObject类,以及EventListener接口,它们构成了委托事件模型的基础。 在java.awt.event包中定义了各类事件类、事件监
28、听接口、以及事件转接器(Adapter)。,ActionEvent事件的处理 注册监听器 addActionListener(ActioListener listener); 对事件的处理:实现ActionListener接口 public void actionPerformed(ActionEvent e),class MyListener extends ActionListener.Mylistener listener = new Mylistener(); 组件对象.addActionListener(listener);.public void actionPerformed(A
29、ctionEvent e)/ 实现方法体 ,以内部类方式实现 组件对象.addActionListener(new ActionListener().public void actionPerformed(ActionEvent e)/ 实现方法体);,public Object getSource():返回发生ActionEvent事件的对象的引用。,JTextArea 文本区 JTextArea类用来建立文本区,用户可以在文本区输入多行的文本。 构造方法 JTextArea(int rows, int columns):构造一个可见行和可见列分别是rows、columns的文本区。 常用方
30、法 setLineWrap(boolean b):决定输入的文本能否在文本区的右边界自动换行。 setWrapStyleWord(boolean b):决定是以单词为界(b取true时)或以字符为界(b取false时)进行换行。,getText():获取文本区的文本。 setText(String s) :设置文本内容。 append(String s):尾部加文本。 insert(String s,int x):在文本区的指定位置处插入文本。 public void copy():拷贝选定的区域。 public void cut():剪切选定的区域。 public void paste():
31、在指定的区域粘贴。,JTextComponent类的方法,按钮与标签组件,JButton 按钮组件 是用来建立按钮的。 构造方法: JButton(String text):创建名字是text的按钮。 public JButton(Icon icon):创建带有图标icon的按钮。 public JButton(String text, Icon icon):创建名字是text且带有图标icon的按钮 。,常用方法 public String getText():获取当前按钮上的名字。 public void setText(String text):重新设置当前按钮的名字,名字由参数text
32、指定。 public Icon getIcon():获取当前按钮上的图标。 public void setIcon(Icon icon):重新设置当前按钮上的图标。 public void setHorizontalTextPosition(int textPosition):设置按钮名字相对按钮上图标的水平位置。,SwingConstants.RIGHT SwingConstants.LEFT SwingConstants.CENTER SwingConstants.LEADING SwingConstants.TRAILING,public void setVerticalTextPosi
33、tion(int textPosition):设置按钮上名字相对按钮上图标的垂直位置。 public void addActionListener(ActionListener) 按钮对象调用该方法可以向按钮增加动作监视器。 public void removeActionListener(ActionListener) 按钮对象调用该方法可以移去按钮上的动作监视器。,JLabel标签组件 JLabel类负责创建标签对象,标签用来显示信息,但没有编辑功能。 构造方法: public JLabel () public JLabel (String s ) public JLabel(String
34、 s, int aligment) public JLabel (Icon icon) public JLabel (String s,Icon icon,int aligment),SwingConstants.RIGHT SwingConstants.LEFT SwingConstants.CENTER SwingConstants.LEADING SwingConstants.TRAILING,常用方法 String getText() 获取标签的名字。 void setText(String s) 设置标签的名字。 Icon getIcon() 获取标签的图标。 void setIco
35、n(Icon icon) 设置标签的图标。 void setHorizontalTextPosition(int a) 参数a确定名字相对于图标的位置;a的取值是: JLabel.LEFT,JLabel.RIGHT。 void setVerticalTextPosition(int a) 参数a确定名字相对于JLabel上的图标的位置;参数a取值是:JLabel.BOTTOM,JLabel.TOP。,复选框与单选按钮组件,JCheckBox复选框 复选框提供两种状态,一种是选中,另一种是未选中,用户通过单击该组件切换状态。 构造方法 public JCheckBox():创建一个没有名字的复选
36、框。 public JCheckBox(String text):创建一个名字是text的复选框。 public JCheckBox(Icon icon):创建一个带有默认图标icon,但没有名字的复选框。 public JCheckBox(String text, Icon icon):创建一个带有默认图标和名字text的复选框。,常用方法 public void setIcon(Icon defaultIcon):设置复选框上的默认图标。 public void setSelectedIcon(Icon selectedIcon)设置复选框选中状态下的图标。 public boolean
37、isSelected() 如果复选框处于选中状态该方法返回true,否则返回false。 如果不对复选框进行初始化设置,默认的初始化设置均为未选中。,复选框上的ItemEvent事件 addItemListener(ItemListener listener):发生ItemEvent事件的监视器的方法 public void itemStateChanged(ItemEvent e): 对发生的事件作出处理。 getItemSelectable():返回Itemevent事件的事件源。,class CheckBoxWindow extends JFrame implements ItemLis
38、tener box.addItemListener(this); public void itemStateChanged(ItemEvent e) /对事件的处理 ,JRadioButton单选按钮 一组单选按钮同一时刻只能有一个被选中。 当创建了若干个单选按钮后,应使用ButtonGroup再创建一个对象,然后利用这个对象把这若干个单选按钮归组。 归到同一组的单选按钮每一时刻只能选一。 例如:,ButtonGroup grounp=new ButtonGroup(); JRadioButton button1=new JRadioButton(“小学”); button2=new JRad
39、ioButton(“中学”); grounp.add(button1); grounp.add(button2);,列表组件,用户可以在下拉列表看到第一个选项和它旁边的箭头按钮。 当用户单击箭头按钮时,选项列表打开。 常用方法 public JComboBox() 创建一个没有选项下拉列表。 public void addItem(Object anObject) 增加选项。 public int getSelectedIndex() 返回当前下拉列表中被选中的选项的索引,索引的起始值是0。,public Object getSelectedItem() 返回当前下拉列表中被选中的选项。 pu
40、blic void removeItemAt(int anIndex) 从下拉列表的选项中删除索引值是anIndex 选项。 public void removeAllItems() 删除全部选项。 public void addItemListener(ItemListener) 向下拉列表增加ItemEvent事件的监视器。,下拉式列表上的ItemEvent事件 对于下拉式列表事件源,可以发生ItemEvent事件。,表格组件,使用JTable可以创建一个表格对象。 构造方法 JTable (Object data , Object columnName) 表格的视图将以行和列的形式显示数
41、组data每个单元中对象的字符串表示。 参数columnName用来指定表格的列名。 用户在表格单元中输入的数据都被认为是一个Object对象。 用户通过表格视图对表格单元中的数据进行编辑,以达到修改二维数组data中对应的数据。,Object a = new Object34; Object name = 商品名称,单价,销售量,销售额; JTable table=new JTable(a,name);,树组件,树与节点 JTree类的实例称作树组件。 构造树组件前要先创建出称作节点的对象。 实现MutableTreeNode接口的类创建的对象都可以成为树上的节点。 树中最基本的对象叫做节点
42、,树以垂直方式显示数据,每行显示一个节点。 树中只有一个根节点,所有其它节点从这里引出。 节点包括根节点,带子节点的分支节点,不带子节点的叶节点。,DefaultMutableTreeNode类 该类实现了MutableTreeNode接口的类,可以使用这个类为要创建的树准备节点。 构造方法: DefaultMutableTreeNode(Object userObject):创建的节点默认可以有子节点 DefaultMutableTreeNode(Object userObject,boolean allowChildren):创建的节点有无子节点要根据参数allowChildren的真假来
43、判断,为true时有子节点,为假时无子节点。,树上的TreeSelectionEvent事件 常用方法: addTreeSelectionListener(TreeSelectionListener listener):获得一个TreeSelectionEvent事件的监视器 public void valueChanged (TreeSelection Event e):处理TreeSelectionEvent事件 getLastSelectedPathComponent() :获取选中的节点 getUserObject():得到与节点相关的信息。,进度条组件,JProgressBar类 使
44、用JProgressBar类创建进度条组件。 该组件能用一种颜色动态地填充自己,以便显示某任务完成的百分比。 构造函数: JProgessBar() JProgressBar(int min,int max) JProgressBar(int orient ,int min,int max) 常用方法 pulic void set setValue(int n) 用一种颜色水平填充自己。 setMinimum(int min):改变最小值 setMaximum(int max):改变最大值。,带进度条的输入流 ProgressMonitorInputStream是javax.swing包提供的
45、输入流类。 读取文件时可看见文件的读取进度。 构造方法: ProgressMonitorInputStream(Conmponent c,String s,InputStream);,组件的常见方法,JComponent类是所有组件的父类。 组件都是矩形形状,组件本身有一个默认的坐标系,组件的左上角的坐标值是(0,0)。 如果一个组件的宽是20,高是10,那么,该坐标系中,x坐标的最大值是20;y坐标的最大值是10,如下图所示。,组件的颜色 public void setBackground(Color c) :设置组件的背景色。 public void setForeground(Color
46、 c): 设置组件的前景色。 public Color getBackground(Color c):获取组件的背景色。 public Color getForeground(Color c) :获取组件的前景色。 public Color(int red,int green,ing blue):创建一个颜色对象,其中red、green、blue的取值在0到255之间。,组件透明 组件默认是不透明的。 public void setOpaque(boolean isOpaque):设置组件是否不透明 isOpaque取false时,组件被设置为透明。 isOpaque取true时组件被设置为不
47、透明。 public boolean isOpaque(): 当组件不透明时该方法返回true,否则返回false。,组件的边框 组件默认的边框是一个黑边的矩形。 public void setBorder(Border border):设置组件的边框。 该方法的参数是一个接口,必须向该参数传递一个实现接口Border类的实例。 如果传递一个null,组件将取消边框。 public Border getBorder():返回边框。,组件的字体 public void setFont(Font f):组件调用该方法设置组件上的字体。 public Font getFont(Font f):组件调
48、用该方法获取组件上的字体。 上述方法中用到了java.awt包中的Font类, Font类的构造方法是: public Font(String name,int style,int size) :创建字体对象。 name是字体的名字 style决定字体的样式,取值是一个整数。,组件的大小与位置 public void setSize(int width,int height) 设置组件的大小。 public void setLocation(int x,int y) 设置组件在容器中的位置,组件距容器的左、上边界 x、 y 个像素。 public Dimension getSize() 返回一
49、个Dimension对象的引用,该对象实体中当前组件的宽度和高度。,public Point getLocation(int x,int y) 返回一个Point对象的引用,该对象实体中含有组件的左上角在容器的坐标系中的x坐标和y坐标。 public void setBounds(int x,int y,int width,int height)设置组件在容器中的位置和组件的大小。 public Rectangle getBounds() 返回一个Rectangle对象的引用,该对象实体中含有当前组件左上角在容器坐标系中的x坐标和y坐标,宽度和高度。,组件的激活与可见性 public void
50、 setEnabled(boolean b) 设置组件是否可被激活。 当参数b取值true时,组件可以被激活。 当参数b取值false 时,组件不可激活。 默认情况下,组件是可以被激活的。 public void setVisible(boolean b) 设置组件在该容器中的可见性 当b取值true时,组件在容器中可见。 当b取值false时,组件在容器中不可见。 除了Window型组件外,其它类型组件默认是可见的。,组件可以触发焦点事件。 public void addFocusListener(FocusListener listener) :注册焦点事件监听器。 如果组件从无输入焦点变
51、成有输入焦点或从有输入焦点变成无输入焦点都会触发FocusEvent事件。 创建监视器的类必须要实现FocusListener 接口,该接口有两个方法: public void focusGained(FocusEvent e) public void focusLost(FocusEvent e),焦点事件,text.addFocusListener(this); public void focusGained(FocusEvent e) /设置背景颜色为绿色 public void focusLost(FocusEvent e) /设置背景颜色为绿色,窗口事件,WindowListener
52、接口 JFrame类是Window类的子类,Window型对象都能触发WindowEvent事件。 当一个JFrame窗口被激活、撤消激活、打开、关闭、图标化或撤消图标化时,就引发了窗口事件。 addWindowlistener():注册监听器 WindowListener接口中有7个不同的方法,分别是: public void windowActivated(WindowEvent e) 当窗口从非激活状态到激活时,窗口的监视器调用该方法。,public void windowDeactivated(WindowEvent e): 当窗口激活状态到非激活状态时调用该方法。 public vo
53、id windowClosing(WindowEvent e):当窗口正在被关闭时调用该方法。 public void windowClosed(WindowEvent e) :当窗口关闭时调用该方法。 public void windowIconified(WindowEvent e):当窗口图标化时调用该方法。 public void windowDeiconified(WindowEvent e) :当窗口撤消图标化时调用该方法。 public void windowOpened(WindowEvent e):当窗口打开时调用该方法。,鼠标事件,鼠标事件(MouseEvent) 鼠标事件
54、是鼠标的移动、点击、拖放等行为。 鼠标在组件上的操作(如点击按钮、菜单),不需要处理为鼠标事件,该组件会进行相应的处理。 用户的下列7种操作都可以使得组件触发鼠标事件: 鼠标指针从组件之外进入 鼠标指针从组件内退出 鼠标指针停留在组件上时,按下鼠标 鼠标指针停留在组件上时,释放鼠标 鼠标指针停留在组件上时,单击鼠标 在组件上拖动鼠标指针 在组件上运动鼠标指针,MouseListener接口与MouseMotionListener接口 MouseListener、MouseMotionListener都是处理MouseEvent的接口 MouseListener处理对象对于鼠标的进入、离开、下压
55、、释放及敲击事件 使用addMouseMotionListener (MouseListener listener) 注册监听器 MouseListener接口中的5个方法 mousePressed(MouseEvent):负责处理鼠标按下触发的鼠标事件。,mouseReleased(MouseEvent e):负责处理鼠标释放触发的鼠标事件。 mouseEntered(MouseEvent e):负责处理鼠标进入组件触发的鼠标事件。 mouseExited(MouseEvent e):负责处理鼠标退出组件触发的鼠标事件。 mouseClicked(MouseEvent e):负责处理鼠标单击
56、或连击触发的鼠标事件。,MouseMotionListener接口 MouseMotionListener则处理鼠标的移动及拖曳 addMouseMotionListener(MouseListener listener):注册监听器 接口中的两个方法 mouseDragged(MouseEvent e):负责处理鼠标拖动事件 mouseMoved(MouseEvent e):负责处理鼠标移动事件,MouseEvent 类 MouseEvent类的重要方法 getX():返回触发当前鼠标事件时,鼠标指针在事件源坐标系中的x-坐标。 getY():返回触发当前鼠标事件时,鼠标指针在事件源坐标系中
57、的y-坐标。 getClickCount():返回鼠标被连续单击的次数。 getModifiers() :返回一个整数值。 左键返回的值是常量BUTTON1_MASK。 右键返回的值是常量BUTTON3_MASK。 getSource():返回触发当前鼠标事件的事件源。,鼠标位置的坐标变换 程序可能需要知道鼠标指针在容器坐标系中的坐标,这就需要进行坐标变换。 public static Point convertPoint(Component source, int x, int y,Component destination):该方法返回一个Point对象。 根据鼠标指针在当前事件源sour
58、ce坐标系中的坐标(x,y),得到鼠标在容器 destination坐标系中的坐标。 该对象再调用getX()和getY()方法就可以获取鼠标在容器destination坐标系中的坐标。,鼠标事件的转移 假如正监视一个容器上的鼠标事件,而容器中添加了一些组件,则当在组件上鼠标操作时,容器将不知道这些操作的发生。 MouseEvent convertMouseEvent(Component source, MouseEvent sourceEvent, Component destination)使鼠标事件从一个事件源转移到另一个事件源上。 上述方法是javax.swing包中的SwingUti
59、lities类的静态方法。,获取鼠标在系统桌面上的坐标 PointerInfo类 是SDK1.5在java.awt包中新增的一个类。 可以帮助程序获取鼠标指针在系统图形设备中的位置坐标。 使用PointerInfo 的类方法: getPointerInfo():可以实例化一个PointerInfo对象。,PointerInfo pi=MouseInfo.getPointerInfo();,弹出式菜单 弹出式菜单由JPopupMenu类负责创建 创建弹出式菜单的构造方法 public JPopupMenu():构造无标题弹出式菜单。 public JPopupMenu(String label) 构造由参数label指定标题的弹出式菜单。 public void show(Component invoker, int x, int y):设置弹出式菜单在组件invoker上的弹出的位置。,JPopupMenu() =menu=new JPopupMenu(); menu.show(text,e.getX(),e.getY();,键盘事件,在具有键盘焦点的组件中按下或者释放按键时,将会激发键盘事件。 键盘事件由接口KeyListener的方法来处理 组件使用addKeyListener()注册监听器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度餐饮连锁品牌与合作合同
- 2024物业管理承包合同样本
- 2025年度知识产权信用担保合同示范文本3篇
- 二零二四年工程造价咨询合同标的和义务
- 2025年度大型活动现场清洁保障服务合同3篇
- 二零二四年5G网络建设与运营服务合同
- 2025年度毛竹种植基地承包与农业保险合作合同范本3篇
- 2025年芜湖新房团购合同(含团购优惠及售后服务)3篇
- 二零二四年五保户入住敬老院教育与培训服务合同3篇
- 二零二五年度海上石油勘探设备保险服务合同2篇
- 冬春季呼吸道传染病防控
- 中介费合同范本(2025年)
- 《kdigo专家共识:补体系统在肾脏疾病的作用》解读
- 生产调度员岗位面试题及答案(经典版)
- 【物 理】2024-2025学年八年级上册物理寒假作业人教版
- 交通运输安全生产管理规范
- 2025春夏运动户外行业趋势白皮书
- 电力行业 电力施工组织设计(施工方案)
- 《法制宣传之盗窃罪》课件
- 通信工程单位劳动合同
- 查对制度 课件
评论
0/150
提交评论