高级语程序设计(Java)_第1页
高级语程序设计(Java)_第2页
高级语程序设计(Java)_第3页
高级语程序设计(Java)_第4页
高级语程序设计(Java)_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

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

文档简介

1、西南科技大学网络教育系列课程西南科技大学网络教育系列课程高级语程序设计高级语程序设计(Java)第十章基于Swing的图形用户界面设计高级语言程序设计高级语言程序设计(Java) http:/AWT组件与SWING组件概述v Java在初期借助一种窗口开发类库,叫作AWT(Abstract Windows Toolkit,抽象窗口工具箱)来达到在图形接口上平台独立性。l AWT处理用户界面元素的方法u 把用户界面元素的创建和行为委托给目标平台(Windows、Macintosh、Linux等)上的本地GUI工具(Peers,对等组件)进行处理。u Peers是本地GUI组件,由AWT来操控,P

2、eers对程序开发者是隐而不见的,各平台所产生的peers与各平台有关 。Java程序Java AWT本地窗口系统Peers显示高级语言程序设计高级语言程序设计(Java) http:/ 重量组件和轻量组件l 与本地对等组件相关联的组件(AWT组件)就被称为重量组件。l 不依赖本地对等组件的组件(Swing组件)就被称为轻量组件。l 重量组件具有平台不一致性。l 轻量组件在重量容器的窗口中绘制,背景可以是透明的。高级语言程序设计高级语言程序设计(Java) http:/ AWT与SwingAWTl 粗糙、不美观l 平台不一致,“一次编写,到处调试”l 运行效率较低,不适合复杂界面的程序l 开发

3、速度较快Swingl 更丰富、更方便的用户界面元素集合l 对底层平台的依赖更少,和平台有关的bug也就更少l 给不同平台上的用户一致的感觉l swing组件大部分是轻量组件,没有对等组件v Swing并没有完全代替AWT高级语言程序设计高级语言程序设计(Java) http:/JComponent类的部分子类以及JFrame类和JDialog类Container JFrameJDialogWindowFrameDialogJComponent JButton JTextField JTeatArea JTree JPanel JTableComponentjavax.swing包中JCompo

4、nent(轻组件)类是java.awt包中Container类的一个直接子类、Componenet类的一个间接子类。javax.swing包中的JFame类和JDialog类分别是java.awt包中Frame类和Dialog类的直接子类、Window类的间接子类。高级语言程序设计高级语言程序设计(Java) http:/ 两个基本概念l 组件(component):Java把由Component类的子类或间接子类创建的对象称为一个组件,是图形用户界面中的可见部分,如按钮、标签。 l 容器(container): Java把由Container的子类或间接子类创建的对象称为一个容器,是图形用户

5、界面中容纳其它组件的部分,如窗体。u 一个容器中可容纳一个或多个组件,也可容纳其他容器。高级语言程序设计高级语言程序设计(Java) http:/l 认识几个方法 u add( ):将组件添加到该容器中。u removeAll() :移掉容器中的全部组件。u remove(Component c) 移掉容器中参数指定的组件。u validate():每当容器添加新的组件或移掉组件时,调用该方法以保证容器中的组件能正确显示出来。高级语言程序设计高级语言程序设计(Java) http:/组件的三要素l 内容,如按钮的状态、文本框中的文本l 外观显示,如组件的颜色、大小、可见性l 行为,组建对外部刺

6、激(事件)的反应l 三要素之间的是相互关联的,如按钮组件按钮状态按钮外观按钮观感外部事件按钮行为高级语言程序设计高级语言程序设计(Java) http:/ Swing的结构l Swing采用MVC(模型 - 视图 - 控制)设计模式l MVC的基本思想就是将一个GUI组件分成三个部分:模型部分 存储内容(完整的)视图部分 显示内容(完整或不完整的)控制部分 处理用户事件l 模型必须实现改变和发现内容的方法l 模型是完全不可见的,显示存储在模型中的数据是视图的工作,控制决定是否把外界的事件转化成对模型或视图的改变高级语言程序设计高级语言程序设计(Java) http:/l 例:用户在文本框中进行

7、字符输入按下字符键控制器调用模型中的“插入字符”命令改变文本框组件的内容模型通知视图进行更新视图改变了l 例:用户在文本框中按下了光标键按下光标键控制器通知视图进行滚动改变文本框组件的外观对文本不会有任何影响模型不会有改变高级语言程序设计高级语言程序设计(Java) http:/l 每个组件都有一个包装类(如JButton),用来保存模型和视图。l 在javax.swing包中提供了超过250个类,而其中有接近50个组件类(以J打头)。l javax.swing包中有四个最重要的类u JApplet、JFrame、JDialog和JComponent。u JFrame、JApplet、JDia

8、log都是重组件l swing包是属于Java基础类(Java Foundation Classes,JFC)的一部分。高级语言程序设计高级语言程序设计(Java) http:/JFrame窗体l JFrame的特性u JFrame类其子类创建的对象是窗体。u JFrame类或子类创建的对象是重量容器。u 不可以把组件直接添加到JFame窗体中,应当把组件添加到内容面板中。u 不能为JFame窗体设置布局,应为JFame窗体的内容面板设置布局。u JFame窗体通过调用getContentPane()方法得到它的内容面板。高级语言程序设计高级语言程序设计(Java) http:/ JMnuBa

9、r ContentPane JFame窗体的基本结构高级语言程序设计高级语言程序设计(Java) http:/ JFrame类常用方法:l 构造方法u JFrame() :可以创建一个无标题的窗口。u JFrame(String s) :创建一个标题为s的窗口。l 常用方法l public void setBounds(int a,int b,int width,int height) 窗口调用该方法可以设置出现在屏幕上时的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。高级语言程序设计高级语言程序设计(Java) http:/l pub

10、lic void setSize(int width,int height):设置窗口的大小,窗口在屏幕出现是默认位置是(0,0)。l public void setVisible(boolean b):设置窗口是可见还是不可见,窗口默认是不可见的。l public void setResizable(boolean b):设置窗口是否可调整大小,窗口默认是可调整大小的。 高级语言程序设计高级语言程序设计(Java) http:/l public void setDefaultCloseOperation(int operation) :设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。

11、其中的参数operation取下列有效值:u DO_NOTHING_ON_CLOSE:什么也不做。u HIDE_ON_CLOSE:隐藏当前窗口。u DISPOSE_ON_CLOSE:隐藏当前窗口,并释放窗体占有的其它资源。u EXIT_ON_CLOSE:结束窗体所在的应用程序。高级语言程序设计高级语言程序设计(Java) http:/菜单组件v Swing菜单由菜单条(JMenuBar)、菜单(JMenu)和菜单项(JMenuItem)构成。v 菜单条是所有菜单和菜单项的根(容器)。 需要注意的是,只能向窗口添加一个菜单条 JMenuBar 菜单条l JMenuBar是JComponent类的

12、子类,负责创建菜单条。u JMenuBar menuBar=new JMenuBar();l 将菜单条放置到JFrame窗口中: public void setJMenuBar(JMenuBar menubar);高级语言程序设计高级语言程序设计(Java) http:/ JMenu 菜单l JMenu是JComponent类的间接子类,负责创建菜单。u pulbic JMenu():建立一个没有标题的菜单。u pulbic JMenu(String s):建立一个指定标题菜单,标题由参数s确定。l 例如: 创建一个名为“Edit”的菜单,并添加到菜单条中。 JMenu editMenu=ne

13、w JMenu(“Edit”); menuBar.add(editMenu);高级语言程序设计高级语言程序设计(Java) http:/l 常用方法u public void add(MenuItem item):向菜单增加由参数item指定的菜单选项对象。u public void add(String s):向菜单增加指定的选项。u public JMenuItem getItem(int n):得到指定索引处的菜单选项。u public int getItemCount():得到菜单选项数目。高级语言程序设计高级语言程序设计(Java) http:/ JMenuItem 菜单项l JMe

14、nu是JComponent类的间接子类,负责创建菜单项。u public JMenuItem(String s):构造有标题的菜单项。u public JMenuItem(String text, Icon icon):构造有标题和图标的菜单项。u 创建图标对象 Icon icon=new ImageIcon(“图标文件名”);l 菜单项将被放在菜单里。例如:JMenuItem pasteItem=new JMenuItem(“Paste”);editMenu.add(pasteItem);高级语言程序设计高级语言程序设计(Java) http:/l 主要方法u public void set

15、Enabled(boolean b):设置当前菜单项是否可被选择 u public String getLabel():得到菜单选项的名字。u 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

16、_MASKInputEvent .SHIFT_MASK高级语言程序设计高级语言程序设计(Java) http:/ 嵌入JMenu子菜单l 菜单项本身还可以是一个菜单,称这样的菜单项为子菜单。JMenu editMenu = new JMenu(“Edit”);JMenu optionsMenu = new JMenu(“Options”);editMenu.add(optionsMenu);高级语言程序设计高级语言程序设计(Java) http:/ 作用l 指定各个视图组件在窗口中的分布位置,实现动态布局。l 有助于创建复合式的复杂界面,一个复合式界面由一些简单的基本界面组成。 优点l 可重用

17、性:基本界面可以被重用,组合成各种不同的复合式界面。l 可扩展性:可以方便的扩展基本界面,从而创建更复杂的界面。l 可维护性: 当复合式界面中的局部区域发生变化时,不会影响其它区域 。布局设计高级语言程序设计高级语言程序设计(Java) http:/ 使用布局管理器来实现布局设计l 布局管理器是基于AWT的 l 布局管理器的类型u 流布局管理器:FlowLayoutu 边界布局管理器:BoderLayoutu 卡片式布局管理器:CardLayoutu 网格布局管理器:GridLayoutu 盒式布局管理器:BoxLayout 布局管理让容器使用方法setLayout(布局对象)来设计自己的布局

18、。高级语言程序设计高级语言程序设计(Java) http:/BorderLayoutlWindow型容器的默认布局,比如Jframe类、JDialog类。l每个被BorderLayout管理的容器均被划分为五个区域:东(EAST) ,南(SOUTH),西(WEST),北(NORTH),中(CENTER)。l容器的每个区域,只能加入一个组件,如果试图加入多个组件,其中只有一个组件是可见的。l对于东南西北这四个边界区域,如果,其中的某个区域没有用,它的大小将变为0,CENTER区域将扩展并占用该区域高级语言程序设计高级语言程序设计(Java) http:/l 构造方法u BorderLayout(

19、):构造一个间距为0的BorderLayout实例u BorderLayout(int hgap,int vgap):构造一个指定间距的BorderLayout实例l 在BorderLayout布局管理器的管理下,组建必须通过add()方法加入到容器的五个命名区域之一,否则它们是不可见的。u 方法:add(组件,区域)高级语言程序设计高级语言程序设计(Java) http:/import java.awt.*;import javax.swing.*;public class BorderL public static void main(String args) JFrame f; JBut

20、ton 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.getContentPane().add(bw,West); f.getContentPane().add(bn,Nort

21、h); f.getContentPane().add(bc,Center); f.setSize(350,200);f.setVisible(true); 高级语言程序设计高级语言程序设计(Java) http:/FlowLayoutl将组件按照加入的顺序逐个地放在容器中的一行上,一行放满后再另起一个新行。l每一行中的组件按布局指定的方式对齐方,默认情况下是居中对齐。l三种构造方法:FlowLayout()FlowLayout(int align)FlowLayout(int align,int hgap,int vgap)FlowLayout.LEFT, FlowLayout.RIGHT,F

22、lowLayout.CENTER(默认)hgap:垂直间距,vgap:水平间距,默认值是5个像素高级语言程序设计高级语言程序设计(Java) http:/l FlowLayout布局管理器不强行设定组件的大小,而是允许组件拥有自己希望的大小。l 每个组件都有一个getPreferredSize()方法,容器布局管理器会调用此方法取得每个组件希望的大小。l FlowLayout布局是JPanle容器的默认布局管理器。高级语言程序设计高级语言程序设计(Java) http:/l 当容器中组件数增加时,就显得高低参差不齐,采用容器嵌套的方式,即把一个容器当作一个组件加入另一个容器,使这个容器的布局达

23、到应用的需求高级语言程序设计高级语言程序设计(Java) http:/GridLayoutl网格式的布局管理器,它将容器空间划分成若干行乘若干列的网格,每个格放一个组件。l各组件按照从上到下,从左至右的顺序排列。l构造方法:GridLayout():创建一个只有一行的网格,列数根据实际需要而定GridLayout(int rows,int cols):创建指定行、列的网格,rows和cols中的一个值可以为0GridLayout(int rows,int cols,int hgap,int vgap)高级语言程序设计高级语言程序设计(Java) http:/l 使用GridLayout布局设计

24、的一般步骤:u 使用GridLayout的构造方法创建布局对象,指定划分网格的行数和列数u 使用GridLayout布局容器调用方发add将组件加入容器。 GridLayout布局中每个网格都是相同大小并且强制组件与网格相同大小高级语言程序设计高级语言程序设计(Java) http:/CardLayoutl卡式布局管理器,可以容纳多个组件,但是同一时刻容器只能从这些组件中选出一个来显示,被显示的组件占据容器的整个空间。l选项卡窗格(JTabbedPane)的默认布局是CardLayout。l在JTabbedPane中加入组件:uadd(String text,Component c);u指定和

25、该组件c对应的选项卡的文本提示是text。高级语言程序设计高级语言程序设计(Java) http:/ BoxLayoutl 用BoxLayout类可以创建盒式布局。l Box类创建的容器称作一个盒式容器,盒式容器的的默认布局是盒式布局,而且不允许更改盒式容器的布局。l 行型盒式布局u 容器中组件的上沿在同一水平线上。u Box类的类方法createHorizontalBox()可以获得一个具有行型盒式布局的盒式容器u 行型盒式容器中组件间的间距:Box类调用静态方法createHorizontalStrut(int width)可以得到一个不可见的水平Struct类型对象,称做水平支撑。高级语

26、言程序设计高级语言程序设计(Java) http:/l 列型盒式布局u 容器中组件的左沿在同一垂直线上。u Box类的类方法createVerticalBox()可以获得一个具有列型盒式布局的盒式容器。u 列型盒式容器中组件间的间距:Box类调用静态方法createVertialStrut(int height)可以得到一个不可见的垂直Struct类型对象,称做垂直支撑。高级语言程序设计高级语言程序设计(Java) http:/中间容器v 用来添加组件的轻容器,称为中间容器。 JPanel 面板l JPanel类用来创建一个面板对象,可以向这个面板添加组件(直接使用add方法)。l 使用时需要

27、把这个面板添加到底层容器或其他中间容器中。l JPanel面板的默认布局是FlowLayout布局。l 构造方法uJPanel():构造一个面板容器对象 高级语言程序设计高级语言程序设计(Java) http:/ JScrollPane滚动窗格l 把一个组件放到一个滚动窗格中,然后通过滚动条来观察这个组件。u 例如,JTextArea不自带滚动条,可把文本区放到一个滚动窗格中。l 构造方法JScrollPane(component c):构造一个滚动窗格。高级语言程序设计高级语言程序设计(Java) http:/JSplitPane拆分窗格l 被分成两部分的容器,拆分窗格有两种类型:u 水平拆

28、分:用一条拆分线把容器分成左右两部分,左面放一个组件,右面放一个组件,拆分线可以水平移动u 垂直拆分:用一条拆分线分成上下两部分,上面放一个组件,下面放一个组件,拆分线可以垂直移动。l 构造方法JSplitPane(int a, Component b ,Component c): 构造一个拆分窗格l setDividerLocation(double position):拆分窗格设置拆分线的位置。高级语言程序设计高级语言程序设计(Java) http:/ JLayeredPane分层窗格l 如果添加到容器中的组件经常需要处理重叠问题,就可以将组件添加到JLayeredPane容器。l JLa

29、yeredPane将容器分成5个层,容器使用add(Jcomponent com, int layer); 添加组件com,并指定com所在的层。u layer取值: DEFAULT_LAYER:最底层 PALETTE_LAYER MODAL_LAYER POPUP_LAYER DRAG_LAYER:最上面的层高级语言程序设计高级语言程序设计(Java) http:/l public void setLayer(Component c,int layer):重新设置组件c所在的层l public int getLayer(Component c):获取组件c所在的层数。 高级语言程序设计高级语

30、言程序设计(Java) http:/文件组件 JTextField文本框l 用来建立文本框的,用户可以在文本框输入单行的文本。l 构造方法u JTextField(int x):创建文本框对象,可以在文本框中输入若干个字符,文本框的可见字符个数由参数x指定。u JTextField(String s) :创建文本框对象,则文本框的初始字符串为s,可以在文本框中输入若干个字符。高级语言程序设计高级语言程序设计(Java) http:/l 主要方法u public void setText(String s):设置文本框中的文本为参数s指定的文本。u public String getText()

31、 :获取文本框中的文本。u public void setEditable(boolean b) :指定文本框的可编辑性(默认为可编辑的)。u public void setHorizontalAlignment(int alignment) :设文本在文本框中的对齐方式,其中alignment的有效值确定对齐方式,如:LEFT、CENTER、RIGHT。高级语言程序设计高级语言程序设计(Java) http:/ JPasswordFieldl 建立一个密码框对象l setEchoChar(char c):设置回显字符(默认的回显字符是*)。l char getPassword()方法获取密码

32、框中的密码。高级语言程序设计高级语言程序设计(Java) http:/ActionEvent事件 基于委托的事件模型l 事件的处理由事件的来源(source,对象) ,委托给一个或多个事件监听者(Event Listener)来处理(事件监听者就可视为一种处理事件的对象)。l 组件激发事件,事件监听器监听并处理这一特定事件。l 委托的方法是调用组件的注册监听器方法addxxxListener(Event Listener)高级语言程序设计高级语言程序设计(Java) http:/l 事件监听者u 是一种处理事件的接口,定义于java.awt.event包中,在此包中也定义了各种事件类u 当事件

33、来源对象因用户的操作(鼠标、键盘等),系统会自动触发此事件类对象E,并通知所委托的事件监听者A(需要预先注册),然后事件监听者A中所定义的处理各种事件的方法便会处理此事件E的各种状况 。高级语言程序设计高级语言程序设计(Java) http:/来源对象来源对象向事件监听者向事件监听者A A注册注册事件监听者事件监听者A A事件处理者事件处理者2 2事件处理者事件处理者n n事件处理者事件处理者1 1用户操作用户操作产生产生事件事件E E高级语言程序设计高级语言程序设计(Java) http:/通知发生XXX事件事件源.addXXXListener(存放监视器引用的接口)接口方法(XXX e)

34、实现XXXListener接口的监视器接口回调事件处理示意图高级语言程序设计高级语言程序设计(Java) http:/l 事件结构u 所有的事件动作都开始于java.util包中的EventObject类,以及EventListener接口,它们构成了委托事件模型的基础。u 在java.awt.event包中定义了各类事件类、事件监听接口、以及事件转接器(Adapter)。高级语言程序设计高级语言程序设计(Java) http:/ ActionEvent事件的处理l 注册监听器u addActionListener(ActioListener listener); l 对事件的处理:实现Act

35、ionListener接口u public void actionPerformed(ActionEvent e)class MyListener extends ActionListener.Mylistener listener = new Mylistener();组件对象.addActionListener(listener);.public void actionPerformed(ActionEvent e)/ 实现方法体高级语言程序设计高级语言程序设计(Java) http:/u 以内部类方式实现组件对象.addActionListener(new ActionListener(

36、).public void actionPerformed(ActionEvent e)/ 实现方法体);u public Object getSource():返回发生ActionEvent事件的对象的引用。高级语言程序设计高级语言程序设计(Java) http:/ JTextArea 文本区l JTextArea类用来建立文本区,用户可以在文本区输入多行的文本。l 构造方法u JTextArea(int rows, int columns):构造一个可见行和可见列分别是rows、columns的文本区。l 常用方法u setLineWrap(boolean b):决定输入的文本能否在文本区

37、的右边界自动换行。u setWrapStyleWord(boolean b):决定是以单词为界(b取true时)或以字符为界(b取false时)进行换行。高级语言程序设计高级语言程序设计(Java) http:/u getText():获取文本区的文本。u setText(String s) :设置文本内容。u append(String s):尾部加文本。u insert(String s,int x):在文本区的指定位置处插入文本。u public void copy():拷贝选定的区域。u public void cut():剪切选定的区域。u public void paste():在

38、指定的区域粘贴。JTextComponent类的方法高级语言程序设计高级语言程序设计(Java) http:/按钮与标签组件 JButton 按钮组件l 是用来建立按钮的。l 构造方法:u JButton(String text):创建名字是text的按钮。u public JButton(Icon icon):创建带有图标icon的按钮。u public JButton(String text, Icon icon):创建名字是text且带有图标icon的按钮 。高级语言程序设计高级语言程序设计(Java) http:/l 常用方法u public String getText():获取当前

39、按钮上的名字。u public void setText(String text):重新设置当前按钮的名字,名字由参数text指定。u public Icon getIcon():获取当前按钮上的图标。u public void setIcon(Icon icon):重新设置当前按钮上的图标。u public void setHorizontalTextPosition(int textPosition):设置按钮名字相对按钮上图标的水平位置。SwingConstants.RIGHT SwingConstants.LEFT SwingConstants.CENTER SwingConstant

40、s.LEADING SwingConstants.TRAILING高级语言程序设计高级语言程序设计(Java) http:/u public void setVerticalTextPosition(int textPosition):设置按钮上名字相对按钮上图标的垂直位置。u public void addActionListener(ActionListener) 按钮对象调用该方法可以向按钮增加动作监视器。u public void removeActionListener(ActionListener) 按钮对象调用该方法可以移去按钮上的动作监视器。高级语言程序设计高级语言程序设计(J

41、ava) http:/ JLabel标签组件l JLabel类负责创建标签对象,标签用来显示信息,但没有编辑功能。l构造方法:u public JLabel ()u public JLabel (String s ) u public JLabel(String s, int aligment)u public JLabel (Icon icon) u public JLabel (String s,Icon icon,int aligment)SwingConstants.RIGHT SwingConstants.LEFT SwingConstants.CENTER SwingConstan

42、ts.LEADING SwingConstants.TRAILING高级语言程序设计高级语言程序设计(Java) http:/l 常用方法u String getText() 获取标签的名字。u void setText(String s) 设置标签的名字。u Icon getIcon() 获取标签的图标。u void setIcon(Icon icon) 设置标签的图标。u void setHorizontalTextPosition(int a) 参数a确定名字相对于图标的位置;a的取值是: JLabel.LEFT,JLabel.RIGHT。u void setVerticalTextPo

43、sition(int a) 参数a确定名字相对于JLabel上的图标的位置;参数a取值是:JLabel.BOTTOM,JLabel.TOP。高级语言程序设计高级语言程序设计(Java) http:/复选框与单选按钮组件 JCheckBox复选框l复选框提供两种状态,一种是选中,另一种是未选中,用户通过单击该组件切换状态。l 构造方法upublic JCheckBox():创建一个没有名字的复选框。upublic JCheckBox(String text):创建一个名字是text的复选框。upublic JCheckBox(Icon icon):创建一个带有默认图标icon,但没有名字的复选框

44、。upublic JCheckBox(String text, Icon icon):创建一个带有默认图标和名字text的复选框。高级语言程序设计高级语言程序设计(Java) http:/l 常用方法u public void setIcon(Icon defaultIcon):设置复选框上的默认图标。u public void setSelectedIcon(Icon selectedIcon)设置复选框选中状态下的图标。u public boolean isSelected() 如果复选框处于选中状态该方法返回true,否则返回false。l 如果不对复选框进行初始化设置,默认的初始化设置

45、均为未选中。高级语言程序设计高级语言程序设计(Java) http:/复选框上的ItemEvent事件l addItemListener(ItemListener listener):发生ItemEvent事件的监视器的方法l public void itemStateChanged(ItemEvent e): 对发生的事件作出处理。l getItemSelectable():返回Itemevent事件的事件源。 class CheckBoxWindow extends JFrame implements ItemListener box.addItemListener(this); publ

46、ic void itemStateChanged(ItemEvent e) /对事件的处理高级语言程序设计高级语言程序设计(Java) http:/ JRadioButton单选按钮l 一组单选按钮同一时刻只能有一个被选中。l 当创建了若干个单选按钮后,应使用ButtonGroup再创建一个对象,然后利用这个对象把这若干个单选按钮归组。l 归到同一组的单选按钮每一时刻只能选一。l 例如: ButtonGroup grounp=new ButtonGroup();JRadioButton button1=new JRadioButton(“小学”); button2=new JRadioButt

47、on(“中学”); grounp.add(button1); grounp.add(button2);高级语言程序设计高级语言程序设计(Java) http:/列表组件v 用户可以在下拉列表看到第一个选项和它旁边的箭头按钮。v 当用户单击箭头按钮时,选项列表打开。常用方法l public JComboBox() 创建一个没有选项下拉列表。l public void addItem(Object anObject) 增加选项。l public int getSelectedIndex() 返回当前下拉列表中被选中的选项的索引,索引的起始值是0。高级语言程序设计高级语言程序设计(Java) htt

48、p:/l public Object getSelectedItem() 返回当前下拉列表中被选中的选项。l public void removeItemAt(int anIndex) 从下拉列表的选项中删除索引值是anIndex 选项。l public void removeAllItems() 删除全部选项。l public void addItemListener(ItemListener) 向下拉列表增加ItemEvent事件的监视器。下拉式列表上的ItemEvent事件l对于下拉式列表事件源,可以发生ItemEvent事件。高级语言程序设计高级语言程序设计(Java) http:/表

49、格组件v 使用JTable可以创建一个表格对象。l构造方法 JTable (Object data , Object columnName)u表格的视图将以行和列的形式显示数组data每个单元中对象的字符串表示。u参数columnName用来指定表格的列名。u用户在表格单元中输入的数据都被认为是一个Object对象。u用户通过表格视图对表格单元中的数据进行编辑,以达到修改二维数组data中对应的数据。Object a = new Object34;Object name = 商品名称,单价,销售量,销售额;JTable table=new JTable(a,name);高级语言程序设计高级语言

50、程序设计(Java) http:/树组件树与节点l JTree类的实例称作树组件。l 构造树组件前要先创建出称作节点的对象。l 实现MutableTreeNode接口的类创建的对象都可以成为树上的节点。l 树中最基本的对象叫做节点,树以垂直方式显示数据,每行显示一个节点。l 树中只有一个根节点,所有其它节点从这里引出。l节点包括根节点,带子节点的分支节点,不带子节点的叶节点。高级语言程序设计高级语言程序设计(Java) http:/l DefaultMutableTreeNode类l 该类实现了MutableTreeNode接口的类,可以使用这个类为要创建的树准备节点。l 构造方法:u Def

51、aultMutableTreeNode(Object userObject):创建的节点默认可以有子节点u DefaultMutableTreeNode(Object userObject,boolean allowChildren):创建的节点有无子节点要根据参数allowChildren的真假来判断,为true时有子节点,为假时无子节点。高级语言程序设计高级语言程序设计(Java) http:/ 树上的TreeSelectionEvent事件l常用方法:uaddTreeSelectionListener(TreeSelectionListener listener):获得一个TreeSel

52、ectionEvent事件的监视器upublic void valueChanged (TreeSelection Event e):处理TreeSelectionEvent事件ugetLastSelectedPathComponent() :获取选中的节点ugetUserObject():得到与节点相关的信息。高级语言程序设计高级语言程序设计(Java) http:/进度条组件 JProgressBar类l使用JProgressBar类创建进度条组件。l该组件能用一种颜色动态地填充自己,以便显示某任务完成的百分比。l构造函数:uJProgessBar()uJProgressBar(int m

53、in,int max) uJProgressBar(int orient ,int min,int max)l常用方法u pulic void set setValue(int n) 用一种颜色水平填充自己。u setMinimum(int min):改变最小值u setMaximum(int max):改变最大值。高级语言程序设计高级语言程序设计(Java) http:/带进度条的输入流l ProgressMonitorInputStream是javax.swing包提供的输入流类。l 读取文件时可看见文件的读取进度。l 构造方法:uProgressMonitorInputStream(Co

54、nmponent c,String s,InputStream);高级语言程序设计高级语言程序设计(Java) http:/组件的常见方法l JComponent类是所有组件的父类。l 组件都是矩形形状,组件本身有一个默认的坐标系,组件的左上角的坐标值是(0,0)。l如果一个组件的宽是20,高是10,那么,该坐标系中,x坐标的最大值是20;y坐标的最大值是10,如下图所示。 组件 组件上的坐标系高级语言程序设计高级语言程序设计(Java) http:/组件的颜色l public void setBackground(Color c) :设置组件的背景色。l public void setFor

55、eground(Color c): 设置组件的前景色。l public Color getBackground(Color c):获取组件的背景色。l public Color getForeground(Color c) :获取组件的前景色。l public Color(int red,int green,ing blue):创建一个颜色对象,其中red、green、blue的取值在0到255之间。高级语言程序设计高级语言程序设计(Java) http:/ 组件透明l 组件默认是不透明的。l public void setOpaque(boolean isOpaque):设置组件是否不透明u

56、 isOpaque取false时,组件被设置为透明。u isOpaque取true时组件被设置为不透明。l public boolean isOpaque(): 当组件不透明时该方法返回true,否则返回false。高级语言程序设计高级语言程序设计(Java) http:/ 组件的边框l 组件默认的边框是一个黑边的矩形。l public void setBorder(Border border):设置组件的边框。u该方法的参数是一个接口,必须向该参数传递一个实现接口Border类的实例。u如果传递一个null,组件将取消边框。 l public Border getBorder():返回边框。

57、高级语言程序设计高级语言程序设计(Java) http:/ 组件的字体l public void setFont(Font f):组件调用该方法设置组件上的字体。l public Font getFont(Font f):组件调用该方法获取组件上的字体。l 上述方法中用到了java.awt包中的Font类,l Font类的构造方法是:u public Font(String name,int style,int size) :创建字体对象。u name是字体的名字u style决定字体的样式,取值是一个整数。高级语言程序设计高级语言程序设计(Java) http:/组件的大小与位置l publ

58、ic void setSize(int width,int height) 设置组件的大小。l public void setLocation(int x,int y) 设置组件在容器中的位置,组件距容器的左、上边界 x、 y 个像素。l public Dimension getSize() 返回一个Dimension对象的引用,该对象实体中当前组件的宽度和高度。高级语言程序设计高级语言程序设计(Java) http:/l public Point getLocation(int x,int y) 返回一个Point对象的引用,该对象实体中含有组件的左上角在容器的坐标系中的x坐标和y坐标。l

59、public void setBounds(int x,int y,int width,int height)设置组件在容器中的位置和组件的大小。l public Rectangle getBounds() 返回一个Rectangle对象的引用,该对象实体中含有当前组件左上角在容器坐标系中的x坐标和y坐标,宽度和高度。高级语言程序设计高级语言程序设计(Java) http:/ 组件的激活与可见性l public void setEnabled(boolean b) 设置组件是否可被激活。u当参数b取值true时,组件可以被激活。u当参数b取值false 时,组件不可激活。u默认情况下,组件是可

60、以被激活的。l public void setVisible(boolean b) 设置组件在该容器中的可见性u 当b取值true时,组件在容器中可见。u 当b取值false时,组件在容器中不可见。u 除了Window型组件外,其它类型组件默认是可见的。高级语言程序设计高级语言程序设计(Java) http:/l 组件可以触发焦点事件。l public void addFocusListener(FocusListener listener) :注册焦点事件监听器。l 如果组件从无输入焦点变成有输入焦点或从有输入焦点变成无输入焦点都会触发FocusEvent事件。l 创建监视器的类必须要实现F

温馨提示

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

评论

0/150

提交评论