第六章 组件和事件的处理机制_第1页
第六章 组件和事件的处理机制_第2页
第六章 组件和事件的处理机制_第3页
第六章 组件和事件的处理机制_第4页
第六章 组件和事件的处理机制_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

第六章组件和事件的处理机制技能目标能运用布局管理器及各种可视组件设计应用程序图形界面。知识目标掌握常用可视组件的用法掌握容器组件的布局样式掌握事件驱动机制项目任务本项目完成输入学生的姓名、性别、个人爱好与籍贯信息并输出。学生的信息输入形式是借助于图形化的用户界面实现的。为方便用户的输入,在图形化界面中使用了很多的可视组件。本章要点主要内容6.1图形用户界面概述6.2常用可视化组件6.3布局管理器6.4事件处理机制6.1图形用户界面概述用户界面是软件开发中的一项重要工作。用户界面是计算机的使用者——用户与计算机系统交互的接口,用户界面功能是否完善、方便,将直接影响用户对应用软件的使用。GUI(GraphicalUserInterface图形用户界面)使用图形方式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果以图形的方式显示给用户。设计和实现图形用户界面的工作主要两个:①创建组成界面的各元素,指定它们的属性和位置关系,构成完整的图形用户界面的外观。②定义图形用户界面的事件和各界面元素对不同事件的响应,实现与用户的交互。6.1图形用户界面概述Java基类(JavaFoundationClasses,JFC)是关于GUI组件和服务的完整集合,主要由5个API构成:AWT、Swing、Java2D、DragandDrop、AccessibilityJFCSwingAWTJava2DDragandDropAccessibility6.1图形用户界面概述6.1图形用户界面概述

AWT组件库为Java应用程序提供了多种GUI工具。

Swing提供了一整套用Java语言编写的GUI组件,以保证

可移植性。

Java2D是一种图形API,提供了高级的二维图形图像处

理类的集合。

DragandDrop技术提供了Java和本地应用程序之间的交

互性(交换数据等)。

AccessibilityAPI辅助开发使用非传统输入输出方式(语

音)的应用程序。AWT

AWT(AbstractWindowToolkit抽象工具包)是一个独立平台的窗口工具组件集。AWT的作用是给用户提供基本的界面组件,如按钮、列表框、菜单等。只提供按钮、滚动条等最基本的组件,而不提供TreeView等现代化GUI组件,并且AWT组件只提供基本的功能,如按钮上只能出现文字不能出现图形。不能跨平台。AWT组件通过相应的本地组件与操作系统沟通,不同操作系统,绘制出来的界面可能不同。

6.1图形用户界面概述java.lang.ObjectColor颜色Font字体Component组件BorderLayout,FlowLayoutCardLayout,GridBagLayot布局类CheckboxGroup复选框组Image图象AWTEvent事件MenuComponent菜单组件Graphics图形java.awt中的各个类

6.1图形用户界面概述SwingSwing是建立在AWT基础之上的,解决了AWT不能跨平台的问题,它利用了AWT的底层组件,包括图形、颜色、字体、工具包和布局管理器等。通过引入新特性和丰富的功能,Swing提供了比AWT更全面的组件集合。SwingAPI是围绕实现AWT各个部分的API构建的,这保证了所有早期的AWT组件仍然可以使用。

大多数AWT组件只要在其类名前加J即可转换成Swing组件。Swing组件均是以AWT的Container类为基础开发的Javax.swing组件从功能上可分为:(1)顶层容器:JFrame,JApplet,JDialog,JWindow共4个。(2)中间容器:JPanel,JScrollPane,JSplitPane,JToolBar等。(3)特殊容器:在GUI上起特殊作用的中间层,如JInternalJFrame,JLayeredPane,JRootPane等。(4)基本控件:实现人机交互的组件,如Jbutton,JComboBox,JList,JMenu,JSlider,JTextField等。(5)不可编辑信息的显示:向用户显示不可编辑信息的组件,例如JLabel,JProgressBar,ToolTip等。(6)可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,

如JColorChooser,JFileChoose,JFileChooser,JTextArea等。Swing组件的分类Java语言中,设计和实现GUI主要分为三个主要步骤:1.创建组件(component),建立可以显示的元素2.指定布局(layout),排列组件位置3.响应事件(event),与用户产生交互6.2组件

组件(component)是构成图形用户界面的基本成分和核心元素。组件类(Component)是一个抽象类,是AWT组件类层次结构的基类,实际使用的组件都是Component类的子类。Component类提供对组件操作的通用方法,包括设置组件位置、设置组件大小、设置组件字体、响应鼠标或键盘事件、组件重绘等。javax.swing包中的JComponent类是java.awt包中Container类的一个直接子类。Component类是其他组件类的父类,该类的一些方法可直接继承到子类中。(1)

setFont(Fontf):设置组件的字体。(2)

setForeground(Colorr):设置组件的前景色。(3)

setLocation(intx,inty):设置组件的显示位置。(4)

setSize(intwidth,intheight):调整组件的大小,使其宽度为width,高度为height。(5)

setVisible(booleanb):根据参数b的值显示或隐藏此组件。(6)

getForeground():获得组件的前景色。(7)

getFont():获得组件的字体。(8)

getBackground():获得组件的背景色。(9)

getHeight():返回组件的当前高度。(10)

invalidate():使此组件无效。(11)

getBounds():以Rectangle对象的形式获得组件的边界。Component(1)按钮(JButton)按钮是一个常用组件,按钮可以带标签或图象。按钮常用的构造方法如下:①publicJButton(Iconicon):按钮上显示图标。②publicJButton(Stringtext):按钮上显示的文本为text。③publicJButton(Stringtext,Iconicon):创建名字是text且带有图标icon的按钮。

按钮常用的实例方法如下:①publicvoidsetText(Stringtext):按钮调用该方法可以重新设置当前按钮的名字,名字由参数text指定。②publicStringgetText():按钮调用该方法可以获取当前按钮上的名字。③publicvoidsetIcon(Iconicon):按钮调用该方法可以重新设置当前按钮上的

图标。常用可视组件

(2)标签(JLabel)JLabel类负责创建标签对象,标签用来显示信息,但没有编辑功能。标签常用构造方法如下:①publicJLabel():创建没有名字的标签。②publicJLabel(Strings):创建名字是s的标签。③publicJLabel(Strings,intaligment):创建名字是s,对齐方式是aligment的标签。aligment取值为JLabel.LEFT,JLabel.RIGHT,JLabel.CENTER。④publicJLabel(Iconicon):创建具有图标icon的标签,icon在标签中左对齐。按钮常用实例方法如下:①publicStringgetText():获取标签的名字。②publicvoidsetText(Strings)设置标签的名字是s。③publicvoidsetIcon(Iconicon)设置标签的图标是icon。常用可视组件

(3)文本框(JTextField)JTextField创建的一个对象就是一个文本框。用户可以在文本框输入单行的文本。文本框的主要构造方法如下:①publicJTextField(intx):如果使用这个构造方法创建文本框对象,文本框的可见字符个数由参数x指定。②publicJTextField(Strings):如果使用这个构造方法创建文本框对象,则文本框的初始字符串为s.文本框常用实例方法如下:①publicvoidsetText(Strings):文本框对象调用该方法可以设置文本框中的文本为参数s指定的文本。②publicStringgetText():文本框对象调用该方法可以获取文本框中的文本。③publicvoidsetEditable(booleanb):文本框对象调用该方法可以指定文本框的可编辑性。常用可视组件

容器(Container)是组件(Component)的抽象子类,是一种特殊的组件,在该类中允许装入其他的组件,要装入的组件也可以是容器,这样可以创建完整的层次结构。

容器有助于在屏幕上布置GUI组件。最常用的容器是Panel(面板)、Frame(框架)和Dialog(对话框)。

容器

容器

Java把由Container的子类或间接子类创建的对象称为一个容器。容器类的常用方法:①publicvoidadd():一个容器调用这个方法将组件添加到该容器中。②publicvoidremoveAll():容器调用removeAll()方法可以移掉容器中的全部组件。③publicvoidremove(Componentc):调用remove(Componentc)方法可以移掉容器中参数指定的组件。④publicvoidvalidate():每当容器添加新的组件或移掉组件时,应该让容器调用validate()方法,以保证容器中的组件能正确显示出来。1)框架(JFrame)框架是一个不被其它窗体所包含的独立的窗体,是在Java图形化应用中容纳其它用户接口组件的基本单位。JFrame类是用来创建一个窗体的。框架的构造方法如下:①publicJFrame():声明并创建一个没有标题的JFrame对象。②publicJFrame(Stringtitle):声明并创建一个指定标题为title的JFrame对象。框架的实例方法如下:①publicvoidadd(Componentcomp):在框架中添加组件comp。②publicvoidsetLayout(LayoutManagermgr):设置布局方式。③publicvoidsetTitle(Stringtitle):设置框架的标题。④publicStringgetTitle(Stringtitle):获取框架的标题。容器

容器

⑤publicvoidsetBounds(inta,intb,intwidth,intheight):设置出现在屏幕上时的初始位置为(a,b),即距屏幕左面a个像素、距屏幕上方b个像素,窗口的宽是width,高是height。⑥publicvoidsetResizable(booleanb):设置窗口是否可调整大小,默认窗口是可以调整大小的。⑦publicvoidsetDefaultCloseOperation(intoperation):单击窗体右上角的关闭图标后,程序作出处理。operation取值为Jframe.DO_NOTHING_ON_CLOSE;Jframe.HIDE_ON_CLOSE;Jframe.EXIT_ON_CLOSE

建立一个框架importjavax.swing.*;importjava.awt.*;publicclassMyFrame{publicstaticvoidmain(Stringargs[]){JFramef=newJFrame("第一个窗口程序");//JFrame在javax.swing包中

f.setSize(220,140);f.setLocation(300,200);

f.setVisible(true);f.getContentPane().setBackground(Color.red);//Color在java.awt中f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//按关闭则退出程序}}importjavax.swing.*;publicclassF{publicstaticvoidmain(Stringargs[])

{JFramefra=newJFrame("ButtApp");fra.setSize(250,170);fra.setLayout(null);//关闭布局设置JButtonbutt=newJButton("click");butt.setSize(100,50);butt.setLocation(75,60);

fra.add(butt);fra.setVisible(true);

}}2)面板(JPanel)面板(JPanel)用于容纳界面元素,以便在布局管理器的设置下可容纳更多的组件,实现容器的嵌套。框架与面板尽管都是容器,但框架可以独立显示,但面板一般要嵌入到框架中显示,框架可以带标题、菜单条等,但面板不带。容器

importjavax.swing.*;importjava.awt.*;classMyFrame{publicstaticvoidmain(Stringargs[]){JFramef=newJFrame("加入面板的框架");f.setLayout(newGridLayout(2,1));//把框架分上下两部分

JPanelp1=newJPanel();

JPanelp2=newJPanel();p1.setBackground(Color.red);//设置p1面板的背景色为红色

p2.setBackground(Color.green);//设置p2面板的背景色为绿色

f.add(p1);f.add(p2);f.setSize(220,140);f.setLocation(300,200);f.setVisible(true);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}importjavax.swing.*;publicclassF{publicstaticvoidmain(Stringargs[])

{JFramefra=newJFrame("文本框程序");

JTextFieldtxt1=newJTextField(50);JTextFieldtxt2=newJTextField("TextField",50);fra.setBounds(0,0,300,200);fra.setLayout(null);txt1.setBounds(50,50,130,20);//设置文本框的大小txt2.setBounds(50,100,130,30);fra.add(txt1);fra.add(txt2);fra.setVisible(true);

}}6.3布局管理器

一个容器中的各个组件之间的位置和大小关系就称之为布局。Java语言提供了布局管理器来管理组件在容器中的布局。

布局管理器会依据组件的加入顺序决定其摆放方式。组件的大小、形状、位置,在不同的布局管理器下有显著的不同。此外,布局管理器会自动适应小程序或应用程序窗口的大小,如果某个窗口的大小改变了,那么其上各个组件的大小、形状、位置都有可能发生改变。选择了容器之后,可以通过容器的setLayout()和getLayout()方法来确定布局(Layout)。

Java提供以下几种布局管理器(LayoutManager):流布局(FlowLayout)、边界布局(BorderLayout)、网格布局(GridLayout)、卡片布局(CardLayout)等。

为每个容器都可以设置对应的布局方式。没有设置时,为缺省的布局方式。Panel、Applet的默认布局为流布局,Window、Frame的默认布局为边界布局。6.3布局管理器

流式布局(FlowLayout)

流式布局按从左至右、从上至下的方式将组件加入到容器中。如果一行显示不了所有的组件,会自动换到下一行显示。对齐方式默认为:CENTER;间距默认为:5(像素)设置容器布局为流布局的方法如下:c.setLayout(FlowLayoutlayout):将容器组件的布局设为流布局。例如创建一个框架,若指定框架布局为流布局,则可用以下两种方式。方式一:JFramef=newJFrame();FlowLayoutfLayout=newFlowLayout();f.setLayout(fLayout);方式二:JFramef=newJFrame();f.setLayout(newFlowLayout());流式布局(FlowLayout)importjava.awt.*;importjavax.swing.*;publicclassBorderLayoutDemo{ publicstaticvoidmain(Stringarg[])

{ JButtonb1=newJButton("Button1");

JButtonb2=newJButton("Button2"); JButtonb3=newJButton("Button3"); JButtonb4=newJButton("Button4"); JButtonb5=newJButton("Button5"); JFramewin=newJFrame("FlowStyle");

win.setLayout(newFlowLayout());//设置框架为流布局

win.add(b1); win.add(b2); win.add(b3); win.add(b4); win.add(b5); win.setSize(200,160); win.setVisible(true); win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}边界布局(BorderLayout)

边界布局将容器组件划分成了5个区域:南(South)、北(North)、东(East)、西(West)、中(Center)。设置容器的布局为边界布局的方法如下:c.setLayout(BorderLayoutlayout):将容器组件的布局设为流布局。若指定了容器的布局为边界布局,则向容器中加入组件,可以通过以下两种形式实现:①add(Strings,Componentcomp):其中s代表位置,位置用字符串“South”、“North”、“East”、“West”、“Center”(默认)表示。②add(Componentcomp,intx):其中x是代表位置的常量值,分别是BorderLayout.SOUTH、BorderLayout.NORTH、BorderLayout.EAST、BorderLayout.WEST、BorderLayout.CENTER。边界布局(BorderLayout)importjava.awt.*;importjavax.swing.*;classBorderLayoutDemo{ publicstaticvoidmain(Stringarg[])

{ JButtonnorth=newJButton("North");

JButtoneast=newJButton("East"); JButtonwest=newJButton("west"); JButtonsouth=newJButton("South"); JButtoncenter=newJButton("Center"); JFramewin=newJFrame("BorderStyle");

win.setLayout(newBorderLayout());//设置框架为边界布局

win.add("North",north); win.add("South",south); win.add("Center",center); win.add("East",east);win.add("West",west);win.setSize(200,200);win.setVisible(true);win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}

网格布局将容器划分成规则的行列网格样式,组件逐行加入到网格中,每个组件大小一致。但当容器中放置的组件数超过网格数时,则自动增加网格列数,行数不变。在向GridLayout添加组件时,其顺序是从网格的左上角开始,从左向右排列,直到排满一行,再从下一行开始从左向右依次排列。网格布局(GridLayout)importjava.awt.*;importjavax.swing.*;classGridLayoutDemo{ publicstaticvoidmain(Stringarg[]){JButtonb1=newJButton("Button1");

JButtonb2=newJButton("Button2");JButtonb3=newJButton("Button3");JButtonb4=newJButton("Button4");JButtonb5=newJButton("Button5");JButtonb6=newJButton("Button6");JFramewin=newJFrame("GridStyle");

win.setLayout(newGridLayout(2,3));//设置框架为网络布局

win.add(b1);win.add(b2);win.add(b3);win.add(b4);win.add(b5);win.add(b6);win.setSize(260,160);win.setVisible(true);win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}卡片式布局(CardLayout)

CardLayout布局好像是将各个组件作为卡片排放到一个“卡片盒”中,只有最上面的卡片可见。可以通过这种布局的方法将卡片中的任何一张移到最上面。通常每张卡片都是一个容器(如面板)。JTabbedPane创建的对象称作选项卡窗格。选项卡窗格的默认布局是CardLayout卡片式布局。选项卡窗格可以使用:add(Stringtext,Componentc);将组件c添加到容器当中,并指定和该组件c对应的选项卡的文本是text。使用构造方法:publicJTabbedPane(intplace)创建的选项卡窗格的选项卡的位置由参数place指定,其值为JTabbedPane.TOP、JTabbedPane.BOTTOM、JTabbedPane.LEFT、JTabbedPane.RIGHT。卡片式布局(CardLayout)importjava.awt.*;importjavax.swing.*;publicclassCardLayoutDemo{ publicstaticvoidmain(Stringarg[])

{ JFramewin=newJFrame("CardStyle");

JTabbedPanep=newJTabbedPane(JTabbedPane.LEFT);//创建选项卡窗格

for(inti=1;i<=3;i++)

{

p.add("观看第"+i+"个按钮",newJButton("按钮"+i)); }

win.add(p);//将选项卡窗格加入到框架中

win.setSize(260,160); win.setVisible(true); win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}习题16.4事件处理机制

在一个GUI程序中,为了能够接收用户的输入、键盘命令和鼠标操作,程序应该能够识别这些操作并做出相应的响应。通常,一个键盘操作或一个鼠标操作将引发一个系统预先定义好的事件,在程序中需要编写事件的处理程序。事件处理机制事件处理的过程中的几个基本概念:(1)Event(事件)。所谓事件,就是用户使用鼠标或键盘对窗口

中的组件进行交互发生的一个操作。例如,单击按钮、输入文

字、单击鼠标或键盘等。(2)EventSource(事件源)。所谓事件源,就是能够产生事件的

对象。如按钮、鼠标、文本框或键盘等。(3)EventHandler(事件监听者或处理者)。接收由事件源所产生

的事件消息的对象,它通常是一个接口或适配器。(4)事件处理程序。对接收到的事件(消息)进行处理的程序代

码,通常是一个方法,它包含在事件监听器中,方法的结构

是由系统预先定义好的。为事件源注册监听器,事件源产生事件后,事件处理系统便会自动产生一个与操作对应的事件类的对象(实例),监听器(接口或适配器)监听到事件并将该事件交给相应的事件处理程序,由事件处理程序完成对事件的处理。如当用户单击鼠标时,事件处理系统便会产生一个代表此事件的ActionEvent事件类的对象。用户进行的操作不同,所产生的事件类对象也会不同。每一类事件对应一个监听器接口,该接口规定了接收并处理该类事件的方法规范。事件处理机制工作过程引入事件处理机制后的编程基本方法如下:①组件的事件处理类所在的包为:importjava.awt.event.*或

importjavax.swing.event.*②用如下语句设置事件监听者:事件源.addXxxListener(事件监听者)---实现了XxxListener接口的类的实例③事件监听者所对应的类实现事件所对应的接口XxxListener,并重

写接口中的全部方法。④要删除事件监听者,可以使用语句:

事件源.removeXxxLitener()编写事件处理程序的方法事件触发及处理过程示意图Java常用事件事件类/接口名称接口方法与说明ActionEvent动作事件类ActionListener接口actionPerformed(ActionEvente)单击按钮、选择菜单项或在文本行中按回车键时ComponentEvent调整事件类ComponentListener接口componentMoved(ComponentEvente)组件移动时componentHidden(ComponentEvente)组件隐藏时componentResized(ComponentEvente)组件缩放时componentShown(ComponentEvente)组件显示时FocusEvent焦点事件类FocusListener接口focusGained(FocusEvente) 组件获得焦点时focusLost(FocusEvente) 组件失去焦点时ItemEvent选择事件类ItemListener接口itemStateChanged(ItemEvente)选择复选框、单选按钮、单击列表框、选中带复选框菜单时WindowEvent窗口事件类WindowListener接口windowOpened(WindowEvente) 窗口打开后windowClosed(WindowEvente) 窗口关闭后windowClosing(WindowEvente) 窗口关闭时windowActivated(WindowEvente) 窗口激活时windowDeactivated(WindowEvente) 窗口失去焦点时windowIconified(WindowEvente) 窗口最小化时windowDeiconified(WindowEvente) 最小化窗口还原时AdjustmentEvent调整事件类AdjustmentListener接口adjustmentValueChanged(AdjustmentEvente)改变滚动条滑块位置Java常用事件

每个事件类都提供方法:publicObjectgetSource(),当多个事件源触发的事件由一个共同的监听器处理时,通过该方法可判断当前的事件源是哪个组件。Java常用事件事件适配器

为进行事件处理,需要实现Listener接口的类,而Java规定在实现该接口的类中,必须实现接口中所声明的全部方法。在具体程序设计过程中,有可能只用到接口中的一个或几个方法。

Java为那些声明了多个方法的Listener接口提供了一个对应的适配器(Adapter)类,在该类中实现了对应接口的所有方法,只是方法体为空。

因此在创建新类时,可以不实现接口,而只继承某个适当的适配器,并且仅覆盖所关心的事件处理方法。事件适配器接口名称适配器名称接口名称适配器名称ComponentListenerComponentAdapterMouseListenerMouseAdapterFocusListenerFocusAdapterMouseMotionListenerMouseMotionAdapterItemListenerItemAdapterWindowListenerWindowAdapterKeyListenerKeyAdapter接口与对应的适配器类利用KeyAdapter类处理TextEven事件可供选择的可视组件(1)复选框(JCheckBox)复选框提供两种状态,一种是选中,另一种是未选中,用户通过单击该组件切换状态。复选框的常用方法①publicJCheckBox():创建一个没有名字的复选框。②publicJCheckBox(Stringtext):创建一个名字是text的复选框。③publicbooleanisSelected():如果复选框处于选中状态该方法返回true,否则返回false。(2)单选按钮(JRadioButton)单选按钮和复选框很类似,所不同的是:在若干个复选框中我们可以同时选中多个,而一组单选按钮同一时刻只能有一个被选中。单选按钮的常用方法如下:①JRadioButton(Stringtext):创建一个名字是text的单选按钮。②JRadioButton(Stringtext,booleanselected):创建一个名字是text的单选按钮,同时指定了单选按钮的选中状态。③publicbooleanisSelected():如果单选按钮处于选中状态该方法返回true,否则返回false。

例可供选择的可视组件(3)组合框(JComboBox)①publicJComboBox():使用该构造方法创建一个没有选项下拉列表。②publicJComboBox(Object[]items):创建包含指定数组中的元素的JComboBox。默认情况下,选择数组中的第一项。③publicvoidaddItem(ObjectanObject):下拉列表调用该方法增加选项。④publicintgetSelectedIndex():下拉列表调用该方法可以返回当前下拉列表中被选中的选项的索引,索引的起始值是0。⑤publicObjectgetSelectedItem():下拉列表调用该方法可以返回当前下拉列表中被选中的选项。⑥publicvoidremoveItemAt(intanIndex):下拉列表调用该方法可以从下拉列表的选项中删除索引值是anIndex选项。例可供选择的可视组件(4)列表框(JList)列表框的作用和组合框的作用基本相同,但它允许用户同时选择多项。列表框与组合框的方法大致相同,但须注意以下方法的使用:①publicObjectgetSelectedValue():返回所选的第一个值,如果选择为空,则返回null。②publicObject[]getSelectedValues():返回所选单元的一组值。返回值以递增的索引顺序存储。③publicint[]getSelectedIndexes():获取选项框中选中的多项位置索引编号。返回值是整型数组。

例可供选择的可视组件对话框

对话框(Dialog)是一个带有标题栏的无边界窗口,通常用于接受用户的信息或向用户显示信息。对话框用Dialog类创建,而Dialog类是从Window类继承的。对话框的默认布局是BorderLayout。

通常定义一个框架作为对话框的所属框架。importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassDialogDemoextendsJFrameimplementsActionListener{ publicDialogDemo(){ super("对话框示例");JButtonb=newJButton("打开对话框"); add(b); b.addActionListener(this); setSize(200,120);

setVisible(t

温馨提示

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

评论

0/150

提交评论