




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java程序设计第9章 GUI组件和用户界面设计1教学目标9.1 AWT和Swing组件概述9.2 事件处理模型9.3 命令按钮JButton9.4 标签、单行文本框、多行文本域与滚动条面9.5 复选框按钮JCheckBox和单选按钮JRadioButton9.6 组合框JComboBox9.7 列表JList 9.8 布局管理器2教学目标(续)9.9 面板JPanel和窗口9.10 鼠标事件处理9.11 适配器类9.12 键盘事件处理9.13 菜单9.13.1 主菜单9.13.2 弹出式菜单9.14 选项卡面板JTabbedPane39.1 Swing和AWT组件概述 图形用户界面GUI(G
2、raphical User Interfaces),给用户提供了一个交互式的直观图形化操作界面。提供了程序的外观和感觉每个Java程序利用GUI图形用户界面接受用户的输入,向用户输出程序运行的结果。menu barbuttoncombo boxmenusscroll bars49.1 AWT和Swing组件概述Java语言中,为了方便图形用户界面的开发,设计了专门的类库来生成各种标准图形界面元素和处理图形界面的各种事件。用来生成图形用户界面的类库在以下2个包中:java.awt包。AWT(abstract window toolkit,抽象窗口工具集) javax.swing包59.1 AWT
3、和Swing组件概述Java语言中,为了方便图形用户界面的开发,设计了专门的类库来生成各种标准图形界面元素和处理图形界面的各种事件。用来生成图形用户界面的类库在以下2个包中:java.awt包。AWT(abstract window toolkit,抽象窗口工具集) javax.swing包6 1、 AWT组件介绍java.awt包提供了基本的Java程序的GUI设计工具,包中的主要类或接口之间的继承关系: ObjectLayoutManagerComponetLabelWindowButtonCanvasCheckboxContainerPanelDialogAppletFrame71、 A
4、WT组件介绍(1)组件Component 组件是一个以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如Button、Label,组件通常被放在容器中。Component类是抽象类,定义了所有组件所具有的通用特性和行为,并派生出其他所有的组件。Compoment类提供的功能:基本的绘画支持。方法repaint()、paint()、update()等用来在屏幕上绘制组件.外形控制。包括字体、颜色等。相应的方法有:getFont()、setFont()、setBackground()、SetForeground()等大小和位置控制。方法有:setSize()、setLocation()等。图像
5、处理。类Component实现了接口ImageObserver,其中的方法imageUpdate()用来进行图像跟踪。组件的状态控制。方法有: setEnable()控制组件是否接收用户的输入,isEnable(),isVisible()、isValid()返回组件的状态。 81、 AWT组件介绍 (2)容器Container容器(Container)也是一个类,实际上是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。每个容器add()方法向容器添加某个组件,remove()方法从容器中删除某个组件。每个容器都与一个布局管理器相联,
6、以确定容器内组件的布局方式。容器通过方法setLayout()设置某种布局。 91、 AWT组件介绍(3)布局管理器LayoutManager 容器里组件的位置和大小是由布局管理器来决定的。布局管理器类都实现了接LayoutManager。Java系统提供的标准布局管理器类:FlowLayoutBorderLayoutGridLayoutCardLayoutBoxLayoutGridBagLayout 102. Swing介绍Swing 组件在javax.swing包中。其特点: (1) Swing组件是用100纯Java代码实现的轻量级(light-weight)组件.Swing组件是纯Ja
7、va实现的轻量级组件,没有本地代码,不依赖操作系统的支持,这是与AWT组件的最大区别。因此Swing组件的外观和功能不依赖于任何由宿主平台的窗口系统提供的代码,程序员可以为它设置在不同操作系统下统一的外观风格,当然也可以随操作系统的不同而变。并且Swing组件能够提供本地窗口系统不支持的其他特性。112. Swing介绍(2) Swing组件的多样化 javax.swing包中的Swing组件以“J”开头,除了有与AWT类似的按钮(JButton)、标签(JLabel)、复选框(JCheckBox)、菜单(JMenu)等基本组件外,增加了一个丰富的高层组件集合,如表格(JTable)、树(JT
8、ree)。Swing组件都是AWT的Container类的直接子类和间接子类。大多数Swing组件从JComponent类(除了顶层容器以外的所有组件的基类)继承JComponent是一个抽象类,它定义所有子类组件的一般方法,如:使用setBorder()方法:设置组件外围的边框;使用setTooltipText()方法:为组件设置对用户有帮助的提示信息。 12Swing 组件的继承的超类132. Swing介绍(3)可插入的外观感觉在AWT组件中,由于控制组件外观的对等类与具体平台相关,使得AWT组件总是具有与本机操作系统相关的外观。Swing可以使Java程序在一个平台上运行时能够有不同的
9、外观,可以根据不同用户的习惯确定。143. Swing组件的分类从功能上分:(1)顶层容器:JFrame(框架窗口),JApplet(小应用程序,Applet 的子类), JDialog(对话框), JWindow(无边框的窗口)共4个(2)普通容器:JPanel(面板), JScrollPane(滚动条面板), JSplitPane(分割面板), JToolBar(工具栏)(3)特殊容器:在GUI上起特殊作用的中间层.JInternalFrame(内部窗体), JLayeredPane(分层窗格), JRootPane(根窗格).(4)基本控件:实现人际交互的组件,如JButton(按钮),
10、 JComboBox(组合框),列表JList(列表),JMenu(菜单),JSlider(滑块),JTextField(单行文本框)(5)向用户显示不可编辑信息的组件.例如JLabel(标签), JProgressBar(进度条), ToolTip(提示框)(6)向用户显示能被编辑的格式化信息的组件.如JColorChooser(颜色选择对话框 ), JFileChooser (文件选择对话框 ),JTable(表格),JTextArea(多行文本域 )153. Swing组件的分类Swing组件归为顶层容器、中间层容器、基本组件三个层次。1.顶层容器Swing提供三个顶层容器的类,分别是J
11、Frame、JDialog和JApplet,因为顶层容器必须和操作系统打交道,所以,它们是重量级组件。从继承结构上来看,它们分别是原来AWT组件的Frame、Dialog、Applet类继承而来。每个使用Swing组件的Java程序都必须至少要有一个顶层容器,别的组件都必须放在这个顶层容器上才能显现出来。163. Swing组件的分类Swing组件归为顶层容器、中间层容器、基本组件三个层次。2.中间层容器中间层容器存在的目的仅仅是为了容纳别的组件,它分为两类,即一般用途的和特殊用途的。一般用途的有JPanel(面板)、 JScrollPane(滚动条面板)、 JSplitPane(分割面板)、
12、 JTabbedPane(选项卡)、 JToolBar(工具栏)特殊用途的有JInternalFrame(内部窗体), JLayeredPane(分层窗格), JRootPane(根窗格)173. Swing组件的分类Swing组件归为顶层容器、中间层容器、基本组件三个层次。3.基本组件基本组件通常是在图形用户界面中和用户进行交换的组件。它的基本功能就是和用户交换信息,而不像前两种组件那样是用来容纳别的组件的。根据功能的不同,它可被分为三类:向用户显示不可编辑信息的组件JLabel(标签), JProgressBar(进度条), ToolTip(提示框)实现人机交互的组件JButton(按钮)
13、, JComboBox(组合框),列表JList(列表),JMenu(菜单),JSlider(滑块),JTextField(单行文本框)向用户显示能被编辑的格式化信息的组件.如JColorChooser(颜色选择对话框 ), JFileChooser (文件选择对话框 ),JTable(表格),JTextArea(多行文本域 )18图形用户界面程序的设计步骤建立用户界面设计一个顶层容器对象,如JFrame确定布局,添加组件改变组件属性(大小、位置、颜色、字体等)增加事件处理编写事件监听器类(内含事件处理方法)在事件源上注册事件监听器对象显示用户界面19JFrameJFrame(窗口)是一个带有
14、标题栏和边框的窗口。设计程序的用户界面往往使用JFrame子类的实例作为应用程序的窗口。JFrame是放置其他 Swing 组件的顶级容器,它的构造方法:JFrame(),建立一个无标题的JFrame。JFrame(String title),建立一个标题为title的JFrame。 20JFrameJFrame对象常用方法:(1)Container getContentPane():获得内容面板(2)void setContentPane(Container):设置内容面板(3)void setMenuBar(JMenuBar):设置菜单条(4) void setTitle(String t
15、itle):将窗口标题设置为指定的字符串(5)void setVisible(boolean b):根据参数b 的值显示或隐藏此组件(6) void setSize(Dimension d):设置窗口的大小,宽度d.width,高度 d.height。 (7) void pack():窗体调整到足够显示所有组件 (8) void validate():验证此容器及其所有子组件, 使容器再次布置其子组件。已经布置容器后,再修改此容器的子组件的时候应该调用该方法。 (9) void setLocation(int x, int y):将窗体移到新位置(10) void setResizable(b
16、oolean):设置窗体是否允许拖动以调整大小21JFrameJFrame对象常用方法:(11)void setDefaultCloseOperation(int operation):设置用户在此窗体上发起 “close” 时默认执行的操作。Operation的值必须指定:WindowConstants.DO_NOTHING_ON_CLOSE:不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作。 WindowConstants.HIDE_ON_CLOSE(默认值):调用任意已注册的 WindowListener 对象后自动隐
17、藏该窗体。 WindowConstants.DISPOSE_ON_CLOSE:调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。 相当于调用窗口对象的dispose方法。JFrame .EXIT_ON_CLOSE:调用 System.exit ()方法退出应用程序。默认情况下,该值被设置为 HIDE_ON_CLOSE。22创建JFrame窗体有两种方式:使用JFrame类创建窗体使用JFrame类的子类创建窗体【例】 建立一个标题为“Swing窗口”,大小为(300,200)的窗口,屏幕效果如下图所示。(JFrameDemo.java)231、使用JFrame类创建窗
18、体import javax.swing.JFrame;public class JFrameDemo public static void main(String args) JFrame frame = new JFrame(“Swing窗口”);/ 创建一个带标题的窗体frame.setSize(300, 200);/ 设置窗口大小frame.setVisible(true);/ 设置窗口可见frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/关闭窗口时,退出程序242、使用JFrame类的子类创建窗体import javax.swi
19、ng.JFrame;public class JFrameDemo extends JFrame public JFrameDemo() super(“Swing窗口”);/ 调用超类的构造方法。setSize(300, 200);/ 设置窗口大小setVisible(true);/ 设置窗口可见setDefaultCloseOperation(EXIT_ON_CLOSE);/关闭窗口,退出程序public static void main(String args) JFrameDemo frame = new JFrameDemo();25设置窗体的标题方式1通过super(String t
20、itle)调用基类的构造方法例如:JFrame frame=new JFrame(“窗口示例”);方式2通过setTitle(String title)方法来设置标题。例如:JFrame frame=new JFrame();frame.setTitle(“窗口示例”);26【例】 建立一个标题为“Swing窗口”,大小为(300,200),图标为qq.png,位置居中的窗口。屏幕效果如下图所示。(JFrameDemo.java)27设置窗口位于屏幕中央public class JFrameDemo extends JFrame public JFrameDemo() super(Swing窗
21、口);/设置窗口图标Toolkit kit=Toolkit.getDefaultToolkit();/定义工具包System.out.println(this.getClass().getResource(qq.png);Image img = kit.getImage(getClass().getResource(qq.png); setIconImage(img);/设置窗口居中int fw=getWidth();/获得窗口宽度int fh=getHeight();/获得窗口高度Dimension screensize=kit.getScreenSize();/获取屏幕尺寸int sw=s
22、creensize.width;/获取屏幕的宽度int sh=screensize.height;/获取屏幕的高度setLocation(sw/2-fw/2, sh/2-fh/2);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300,200);setVisible(true);public static void main(String args) JFrameDemo f=new JFrameDemo();284使用Swing的基本规则与AWT组件不同,Swing组件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容
23、器相关联的内容面板(content pane)上。例如,对JFrame顶层容器而言,添加组件有两种方式:方式1:用getContentPane( )方法获得JFrame的内容面板,再对其加入组件:frame.getContentPane().add(childComponent);方式2:建立一个JPanel或 JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板: JPanel contentPane=new JPanel( ); /把其它组件添加到JPanel中; frame.setContentPane(co
24、ntentPane); 29方式1:获得JFrame的内容面板,再对其加入组件import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;public class JFrameDemo extends JFrame public JFrameDemo() super(Swing窗口);/ 调用超类的构造方法。setLayout(new FlowLayout();JButton bt = new JButton(按钮);getContentPane().add(bt);setSize(300, 2
25、00);/ 设置窗口大小setVisible(true);/ 设置窗口可见setDefaultCloseOperation(EXIT_ON_CLOSE);/ 关闭窗口,退出程序public static void main(String args) JFrameDemo frame = new JFrameDemo();30方式1:获得JFrame的内容面板,再对其加入组件import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;public class JFrameDemo public s
26、tatic void main(String args) JFrame frame = new JFrame(Swing窗口);/ 创建一个带标题的窗口frame.setLayout(new FlowLayout();JButton bt=new JButton(按钮);frame.getContentPane().add(bt);frame.setSize(300, 200);/ 设置窗口大小frame.setVisible(true);/ 设置窗口可见frame. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/关闭窗口,退出程序31方式1:
27、获得JFrame的内容面板,再对其加入组件public class JFrameDemo extends JFrame public JFrameDemo() super(Swing窗口);/ 调用超类的构造方法。setLayout(new FlowLayout();JButton bt = new JButton(按钮);/getContentPane().add(bt);Container container=getContentPane(); /获得内容面板container.add(bt); /将按钮添加到内容面板中setSize(300, 200);/ 设置窗口大小gsetVisib
28、le(true);/ 设置窗口可见setDefaultCloseOperation(EXIT_ON_CLOSE);/ 关闭窗口,退出程序public static void main(String args) JFrameDemo frame = new JFrameDemo();32方式2:建立一个中间容器,把组件添加到容器中,再把该容器置为JFrame的内容面板import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;public class JFrameDemo extends JFra
29、me public JFrameDemo() super(Swing窗口);/ 调用超类的构造方法。setLayout(new FlowLayout();JButton bt = new JButton(按钮);JPanel pane=new JPanel();pane.add(bt);setContentPane(pane);setSize(300, 200);/ 设置窗口大小setVisible(true);/ 设置窗口可见setDefaultCloseOperation(EXIT_ON_CLOSE);/ 关闭窗口,退出程序public static void main(String ar
30、gs) JFrameDemo frame = new JFrameDemo();339.2 事件处理模型Java的事件处理模型由三部分组成:(1)事件源(Event source):是用户交互的各种GUI组件,例如按钮、窗口、菜单等产生事件的组件。在Java程序的运行过程中,当用户通过行程序的用户界面进行某个操作时,便引发一个相应的事件。例如,在一个按钮上单击鼠标时,该按钮就是事件源,会产生一个ActionEvent类型的事件。(2)事件对象(Event object):封装了发生事件的有关信息。对于不同的事件源,Java虚拟机会产生相应类型的事件对象。是一个数据对象,用来描述用户所执行的操作
31、。Java中定义了很多事件类,分别用来描述用户不同类型的操作。事件类包含在java.awt.event和javax.swing.event包中。(3)事件监听器(Event listener):当事件发生时被通知到接受事件的事件监听器,然后调用事件监听器中对应的方法响应该事件。一个事件监听器是实现了系统规定的事件监听接口的类的对象。事件监听接口中提供了事件处理的抽象方法的描述。349.2 事件处理模型当用户单击一个按钮,或者单击某个菜单项,或者单击窗口右上角的状态按钮时,这个动作就会触发一个相应的事件,该事件由AWT封装成相应的Event对象,该对象会触发组件上注册的事件监听器(特殊的Java
32、对象),事件监听器调用其内部定义的相应的方法来响应该事件。35图9-4 Java系统的事件监听接口java.awt.event包定义了Java系统的一组事件监听接口类型,一个监听接口往往声明了一个以上的抽象方法。每个抽象方法对应着要处理的事件动作,由用户实现它。 EventListenerActionListenerAdjustmentListenerComponentListenerContainerListenerFocusListenerItemListenerKeyListenerMouseListenerMouseMotionListenerTextListenerWindowLis
33、tener36java.awt.event包中的事件类ObjectEventObjectAWTEventActionEventAdjustmentEventItemEventTextEventContainerEventFocusEventPaintEventWindowEventInputEventMouseWheelEventComponentEventKeyEventMouseEvent379.2 事件处理模型 2.当需要对组件的某种事件进行响应和处理时,程序员必须完成两个步骤:为组件注册实现规定接口的事件监听器; 实现事件监听器接口中声明的事件处理抽象方法。例如, button组件的事
34、件响应过程:JButton button=new JButton(Press ); /(1)为button组件注册事件监听器button.addActionListener(new ButtonHandler();ClassButtonHandler implementsActionListener /实现事件监听接口的类 public void actionPerformed( ActionEvent event ) /(2)实现事件处理方法。 /事件处理代码 鼠标单击,触发事件ActionEvent将调用方法actionPerformed389.2 事件处理模型注册事件监听器为了能够让事件
35、监听器检查某个组件(事件源)是否发生了某些事件,并且在发生时激活事件处理器进行相应的处理,必须在事件源上注册事件监听器。这是通过使用事件源组件的以下方法来完成的:addXxxListener(事件监听器对象)Xxx对应相应的事件类。399.2 事件处理模型图形界面程序(一个类)监听器类(含事件处理方法)监听器对象(含事件处理方法)实例化注册外部动作事件对象产生并传递事件对象接收事件对象,激活事件处理器,实现预定功能事件源(例如一个按钮)含有409.2 事件处理模型3. ActionEvent动作事件 ActionEvent:当特定组件(例如Button)的动作(例如点击按钮)发生时,由组件生成
36、此动作事件。该事件被传递给使用组件的 addActionListener 方法注册的每一个 ActionListener 对象,用以接收这类事件.能够触发这个事件的动作,主要包括:(1) 点击按钮(2) 双击一个列表中的选项;(3) 选择菜单项;(4) 在文本框中输入回车。419.2 事件处理模型ActionEvent事件常用的一些方法:(1) String getActionCommand( ):返回引发事件的动作的命令字符串。例如,对于Button按钮返回的是Button的标签。对于JTextField返回的是文本内容。 (2) String getSource( ):返回引发该事件的组件
37、对象(事件源)的引用。使用getSource( )方法可以区分产生动作命令的不同事件源下面将介绍各个GUI组件时将结合相应的事件类型和事件监听器接口类型进行程序设计的过程。429.3 命令按钮JButton 命令按钮(JButton)是一种组件,当用户通过单击按钮时将产生动作事件ActionEvent,以触发特定的动作代码,从而完成预先指定的功能。Swing中JButton既支持文本按钮,也支持图像按钮,或两者兼有。 439.3 命令按钮JButton1创建按钮对象JButton类常用的一组构造方法:(1) JButton(String text):创建一个带文本的按钮。(2) JButton
38、(Icon icon) :创建一个带图标的按钮。(3)JButton(String text, Icon icon) :创建一个带文本和图标的按钮。 getClass().getResource()方法是从当前.class文件路径查找资源 2按钮对象的常用方法 getLabel( ):返回按钮的标签字符串; setLabel(String s):设置按钮的标签为字符串s。449.3 命令按钮JButton3ActionEvent事件响应当用户单击一个按钮时就引发了一个动作事件ActionEvent。调用JButton的方法addActionListener给按钮注册实现ActionListen
39、er接口的事件监听器为这个接口的actionPerformed(ActionEvent e)方法书写方法体。e.getSource( ):获取引发动作事件的按钮对象引用e.getActionCommand( ):获取按钮的标签。459.3 命令按钮JButton例9-1 文本按钮和图像按钮的程序设计示例 46实现事件监听器的4种方式事件监听器是一个特殊的Java对象,实现事件监听器有以下4种方式:内部类形式:将事件监听器类定义成当前类的内部类。外部类形式:将事件监听器类定义成一个外部类。类本身作为事件监听器类:让当前类本身实现监听器接口或继承事件适配器。匿名内部类形式:使用匿名内部类创建事件监
40、听器。471.使用内部类定义事件监听器类import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Test extends JFrame public Test() super(事件处理模型);/ 调用超类的构造犯法。setLayout(new FlowLayout();JButton button=new JButton(Press); /创建一个JButton按钮button.addActionListener(new ButtonHandler();getContentPane().add(bu
41、tton);setSize(500, 600);/ 设置窗口大小setVisible(true);/ 设置窗口可见public static void main(String args) Test application=new Test(); /创建一个窗口application.setDefaultCloseOperation(EXIT_ON_CLOSE);/使用内部类定义事件监听器类class ButtonHandler implements ActionListener/实现事件处理的方法public void actionPerformed(ActionEvent e)/事件处理代码
42、JOptionPane.showMessageDialog(Test.this, 你按下的是+e.getActionCommand()+按钮,事件处理,JOptionPane.PLAIN_MESSAGE);482.使用外部类定义事件监听器类import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Test extends JFrame public Test() super(事件处理模型);/ 调用超类的构造犯法。setLayout(new FlowLayout();JButton button=ne
43、w JButton(Press); /创建一个JButton按钮button.addActionListener(new ButtonHandler();getContentPane().add(button);setSize(500, 600);/ 设置窗口大小setVisible(true);/ 设置窗口可见public static void main(String args) Test application=new Test(); /创建一个窗口application.setDefaultCloseOperation(EXIT_ON_CLOSE);/使用外部部类定义事件监听器类cla
44、ss ButtonHandler implements ActionListener/实现事件处理的方法public void actionPerformed(ActionEvent e)/事件处理代码JOptionPane.showMessageDialog(Test.this, 你按下的是+e.getActionCommand()+按钮,事件处理,JOptionPane.PLAIN_MESSAGE);493.使用类本身定义事件监听器类import java.awt.*;import java.awt.event.*;import javax.swing.*;/使用类本身定义事件监听器类pu
45、blic class Test extends JFrame implements ActionListenerpublic Test() super(“事件处理模型”);/ 调用超类的构造方法设置窗口标题。setLayout(new FlowLayout();JButton button=new JButton(Press); /创建一个JButton按钮button.addActionListener(this);getContentPane().add(button);setSize(500, 600);/ 设置窗口大小setVisible(true);/ 设置窗口可见 /实现事件处理的
46、方法public void actionPerformed(ActionEvent e)/事件处理代码JOptionPane.showMessageDialog(Test.this, 你按下的是+e.getActionCommand()+按钮,事件处理,JOptionPane.PLAIN_MESSAGE);public static void main(String args) Test application=new Test(); /创建一个窗口application.setDefaultCloseOperation(EXIT_ON_CLOSE);504.使用匿名内部类实现事件监听器imp
47、ort java.awt.*;import java.awt.event.*;import javax.swing.*;public class Test extends JFrame public Test() super(事件处理模型);/ 调用超类的构造犯法。setLayout(new FlowLayout();nnJButton button = new JButton(Press); / 创建一个JButton按钮/使用匿名内部类定义事件监听器类button.addActionListener( new ActionListener()/ 实现事件处理的方法public void a
48、ctionPerformed(ActionEvent e) / 事件处理代码JOptionPane.showMessageDialog(Test.this,你按下的是 + e.getActionCommand() + 按钮, 事件处理,JOptionPane.PLAIN_MESSAGE); );getContentPane().add(button);setSize(500, 600);/ 设置窗口大小setVisible(true);/ 设置窗口可见public static void main(String args) Test application = new Test(); / 创建
49、一个窗口application.setDefaultCloseOperation(EXIT_ON_CLOSE);519.4 标签、单行文本框、多行文本域与滚动条面板搭建GUI图形界面使用最多的Swing组件:标签(JLabel)、单行文本框(JTextField、JTextPassword)多行文本域(JTextArea)滚动条面板(JScrollPane)529.4.1 标签 JLabel JLabel标签是用户不能修改只能查看其内容的文本显示区域,它起到信息说明的作用。JLabel 对象可以显示文本和图像。539.4.1 标签 JLabel使用JLabel类的构造方法创建标签对象。JLab
50、el类常用的构造方法有:(1)JLabel(Stringtext)创建具有指定文本的JLabel对象(2)JLabel(Iconimage) 创建具有指定图像的JLabel对象(3)JLabel(Stringtext inthorizontalAlignment) 水平对齐方式HorizontalAlignment值:SwingConstants接口中静态常量:LEFT、CENTER、RIGHT、LEADING 或 TRAILING。(4)JLabel(Stringtext, Iconicon,inthorizontalAlignment) 创建具有指定文本、图像和水平对齐方式的JLabel对
51、象,该标签在其显示区内垂直居中对齐。文本位于图像的结尾。 549.4.1 标签 JLabel设置或读取JLabel对象属性的常用方法(1)设置或读取JLabel显示的文本setText(String text) String getText()(2)设置或读取JLabel显示的图像setIcon(Iconimage)getIcon()(3)设置JLabel显示文本的前景色和背景色。setForeground(Color c)setBackground(Color c) (4)设置JLabel显示的文本字体setFont(Font f)559.4.1 标签 JLabel例如:创建文本内容是“文本
52、标签”且颜色是红色的 JLabel实例的语句: label1=new JLabel( “用户名 ); label1.setColor(Color.RED); 569.4.1 标签 JLabel 例:创建文本内容为 “照片”, 图像是czims.jpg,且整个标签水平靠左对齐的JLabel实例语句: Icon bug = new ImageIcon(getClass().getResource(CZIMS.JPG) ) label2 = new JLabel( “照片, bug,SwingConstants.LEFT ); /设置label2的文本相对于图片的位置:水平方向居中对齐,垂直方向在图
53、片的底部 label2.setHorizontalTextPosition( SwingConstants.CENTER );label2.setVerticalTextPosition( SwingConstants.BOTTOM ); 579.4.2 JTextField与JTextArea从JTextComponent父类派生单行文本框JTextField、JPasswordField允许编辑单行文本,JTextField显示用户输入的内容,JPasswordField隐藏用户实际输入的内容。多行文本域JTextArea允许用户编辑多行文本。滚动条面板JScrollPane :提供JTe
54、xtArea内容水平滚动和纵向滚动。 589.4.2 JTextField与JTextArea1JTextField和JPasswordFieldJTextField常用的构造方法:(1)JTextField()构造一个内容为空的JTextField实例。(2)JTextField(int columns)构造一个内容为空和指定列宽 的JTextField实例。(3)JTextField(String text) 构造一个用指定文本的JTextField实例。(4)JTextField(String text, int columns)构造一个指定文本和列宽的JTextField实例。 JPa
55、ssword类的构造方法类似于JTextField.599.4.2 JTextField与JTextArea2JTextArea的常用构造方法:JTextArea() 构造一个内容为空的JTextArea实例。JTextArea(int rows,int columns) 构造具有指定行数和列数的JTextArea实例。JTextArea(String text) 构造具有指定文本的JTextArea实例。设置TextComponent是否为可编辑的(b值为true时)JTextArea(String text,int rows,int columns) 构造具有指定文本、行数和列数的JTex
56、tArea实例。609.4.2 JTextField与JTextArea3JTextComponent对象的常用方法:void setText(String) 设置文本内容String getText() 取得文本内容void setEditable(boolean b)设置TextComponent是否为可编辑的(b值为true时)String getSelectedText()返回TextComponent中包含的选定文本619.4.2 JTextField与JTextArea4TextEvent和ActionEvent事件响应JTextField和JTextArea的事件响应首先由它们的
57、父类JTextComponent决定JTextComponent引发事件TextEvent当用户对文本做编辑修改操作时,将引发TextEvent文本改变事件。JTextField比JTextArea多产生一种事件ActionEvent 当用户在文本框中按回车键时,将引发ActionEvent动作事件。JTextArea却不能产生ActionEvent事件.629.4.3 滚动条面板JScrollPane JScrollPane是带滚动条的面板。它是一个容器组件,其作用是通过滚动条在一个较小的区域显示较多大的内容。 JScrollPane的构造方法:JScrollPane(Component v
58、iew):创建一个显示指定组件内容的 JScrollPane,只要组件的内容超过视图大小就会显示水平和垂直滚动条。 63例9-2 JLabel、JTextField、JPasswordField和JTextArea的应用程序运行输出结果如图9-7。程序的功能:(1)当用户分别在用户名和口令的文本框中输入内容按回车键后,将在标签为“显示用户名或口令”的文本框中显示用户输入的内容。(2)在图的下半部分定义了一个水平方向的Box对象,加入Box的组件按水平方向排列。在Box对象中加入了三个GUI组件:两个JTextArea和一个JButton。 用户可通过鼠标选择左边的textArea1的内容,然后
59、鼠标单击标签为“拷贝”按钮,会将选中的textArea1的内容拷贝到右边JScrollPane中。两个JTextArea对象分别放入两个JScrollPane滚动条面板对象中. 649.5 JCheckBox和JRadioButton SwingGUI组件包含3种类型的状态按钮:JToggleButton复选框按钮JCheckBox和单选按钮JRadioButton按钮都有开/关(真/假)两种值。提供用户在给定的数据中进行选择.Swing button 的继承层次JComponentAbstractButtonJToggleButtonJRadioButtonJCheckBoxJButton6
60、51. 复选框(JCheckBox)JCheckBox提供简单的“on/off”开关,旁边显示文本标签。它只有两种状态:选中和未选中。在一组复选框中,可以同时选择多项。661. 复选框(JCheckBox)复选框的常用的构造方法:(1) JCheckBox(String text)(2)JCheckBox(String text, boolean selected)(3) JCheckBox(Icon icon, boolean selected)(4) JCheckBox(String text, Icon icon, boolean selected)创建一个带文本和图标的复选框,并指定其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论