JAVA 图形用户界面设计.ppt

上传人:wuy****n92 文档编号:70791801 上传时间:2023-01-28 格式:PPT 页数:73 大小:1.06MB
返回 下载 相关 举报
JAVA 图形用户界面设计.ppt_第1页
第1页 / 共73页
JAVA 图形用户界面设计.ppt_第2页
第2页 / 共73页
点击查看更多>>
资源描述

《JAVA 图形用户界面设计.ppt》由会员分享,可在线阅读,更多相关《JAVA 图形用户界面设计.ppt(73页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java的java.awt包,即Java抽象窗口工具包(AWT:Abstract Window Toolkit)提供了许多用来设计GUI的组件类 在学习GUI编程时,必须很好地理解掌握两个概念:容器类(Container)和组件类(Component)。javax.swing包中JComponent类是java.awt包中Container类的一个直接子类、是Component类的一个间接子类,学习GUI编程主要是学习掌握使用Component类的一些重要的子类。Java把Component类的子类或间接子类创建的对象称为一个组件。Java把Container的子类或间接子类创建的对象称为一个

2、容器。可以向容器添加组件。Container类提供了一个public方法:add(),一个容器可以调用这个方法将组件添加到该容器中。容器调用removeAll()方法可以移掉容器中的全部组件;调用remove(Component c)方法可以移掉容器中参数c指定的组件。注意到容器本身也是一个组件,因此可以把一个容器添加到另一个容器中实现容器的嵌套。图15.1 Component类的部分子类ContainerComponentJComponentWindow JButton JTextField JTeatArea JTree JPanel JTable JFrameJDialogFrameDi

3、alogJava提供的JFrame类的实例就是一个底层容器(JDialog类的实例也是一个底层容器,见后面的15.6),即通常所称的窗口。其他组件必须被添加到底层容器中,以便借助这个地层容器和操作系统进行信息交互 JFrame类是Container类的间接子类。当需要一个窗口时,可使用JFrame或其子类创建一个对象 JFrame()创建一个无标题的窗口。JFrame(String s)创建标题为s的窗口。public void setVisible(boolean b)设置窗口是否可见,窗口默认是不可见的。public void dispose()撤消当前窗口,并释放当前窗口所使用的资源。p

4、ublic void setDefaultCloseOperation(int operation)该方法用来设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。窗口中的菜单条、菜单、菜单项是我们所熟悉的组件,菜单放在菜单条里,菜单项放在菜单里。1菜单条JComponent类的子类JMenubar负责创建菜单条,即JMenubar的一个实例就是一个菜单条。JFrame类有一个将菜单条放置到窗口中的方法:setJMenuBar(JMenuBar bar);该方法将菜单条添加到窗口的顶端,需要注意的是,只能向窗口添加一个菜单条。2菜单JComponent类的子类JMenu负责创建菜单,即JMen

5、u的一个实例就是一个菜单。3菜单项JComponent类的子类JMenuItem负责创建菜单项,即JMenuItem的一个实例就是一个菜单项。4嵌入子菜单JMenu是JMenuItem的子类,因此菜单本身也是一个菜单项,当把一个菜单看作菜单项添加到某个菜单中时,称这样的菜单为子菜单。5菜单上的图标图15.3 带菜单的窗口为了使菜单项有一个图标,可以用图标类Icon声明一个图标,然后使用其子类ImageIcon类创建一个图标 可以使用JComponent的子类JTextField创建文本框。文本框的特点是允许用户在文本框中输入单行文本。1文本框使用JComponent的子类JTextField创

6、建文本框,允许用户在文本框中输入单行文本。2文本区使用JComponent的子类JTexArea创建文本区,允许用户在文本区中输入多行文本。3按钮使用JComponent的子类JButton类用来创建按钮,允许用户单击按钮。4标签使用JComponent的子类JLabel类用来创建标签,标签为用户提供信息提示。5选择框使用JComponent的子类JCheckBox类用来创建选择框,为用户提供多项选择。选择框的右面有个名字,并提供两种状态,一种是选中,另一种是未选中,用户通过单击该组件切换状态。6单选按钮使用JComponent的子类JRadioButton类用来创建单项选择框,为用户提供单项

7、选择。7下拉列表使用JComponent的子类JComboBox类用来创建下拉列表,为用户提供单项选择。用户可以在下拉列表看到第一个选项和它旁边的箭头按钮,当用户单击箭头按钮时,选项列表打开。8密码框可以使用JComponent的子类JPasswordField创建密码框。允许用户在密码框中输入单行密码,密码框的默认回显字符是*。密码框可以使用setEchoChar(char c)重新设置回显字符,用户输入密码时,密码框只显示回显字符。密码框调用char getPassword()方法可以返回实际的密码。1JPanel 面板我们会经常使用JPanel创建一个面板,再向这个面板添加组件,然后把这

8、个面板添加到其它容器中。JPanel面板的默认布局是FlowLayout布局。2滚动窗格JScrollPane滚动窗格只可以添加一个组件,可以把一个组件放到一个滚动窗格中,然后通过滚动条来该组件。JTextArea不自带滚动条,因此我们就需要把文本区放到一个滚动窗格中 3拆分窗格JSplitPane顾名思义,拆分窗格就是被分成两部分的容器。拆分窗格有两种类型:水平拆分和垂直拆分。水平拆分窗格用一条拆分线把窗格分成左右两部分,左面放一个组件,右面放一个组件,拆分线可以水平移动。垂直拆分窗格用一条拆分线把窗格分成上下两部分,上面放一个组件,下面放一个组件,拆分线可以垂直移动。JSplitPane的

9、两个常用的构造方法:JSplitPane(int a,Component b,Component c)参数a取JSplitPane的静态常量 HORIZONTAL_SPLIT或VERTICAL_SPLIT,以决定是水平还是垂直拆分。后两个参数决定要放置的组件。当拆分线移动时,组件不是连续变化的。JSplitPane(int a,boolean b,Component c,Component d)参数a取JSplitPane的静态常量 HORIZONTAL_SPLIT或VERTICAL_SPLIT,以决定是水平还是垂直拆分。参数b决定当拆分线移动时,组件是否连续变化(true是连续),后两个参数

10、决定要放置的组件。4JLayeredPane分层窗格如果添加到容器中的组件经常需要处理重叠问题,就可以考虑将组件添加到分层窗格。分层窗格分成5个层,分层窗格使用add(Jcomponent com,int layer);添加组件com,并指定com所在的层,其中参数layer取值JLayeredPane类中的类常量:DEFAULT_LAYER、PALETTE_LAYER、MODAL_LAYER、POPUP_LAYER、DRAG_LAYER容器可以使用方法:setLayout(布局对象);设置自己的布局。1FlowLayout布局FlowLayout类创建的对象称做FlowLayout型布局。F

11、lowLayout型布局是JPanel型容器的默认布局,即JPanel及其子类创建的容器对象,如果不专门为其指定布局,则它们的布局就是FlowLayout型布局。FlowLayout类的一个常用构造方法如下:FlowLayout();该构造方法可以创建一个居中对齐的布局对象 如果一个容器con使用这个布局对象:con.setLayout(flow);那么,con可以使用Container类提供的add方法将组件顺序地添加到容器中,组件按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左至右排列,每一行中的组件都居中排列,组件之间的默认水平和垂直间隙是5个像素。组件的大小为默认的最佳

12、大小 对于添加到使用FlowLayout布局的容器中的组件,组件调用setSize(int x,int y)设置的大小无效,如果需要改变最佳大小,组件需调用:public void setPreferredSize(DimensionpreferredSize)设置大小 FlowLayout布局对象调用setAlignment(int aligin)方法可以重新设置布局的对齐方式,其中aligin可以取值:FlowLayout.LEFT、FlowLayout.CENTER、FlowLayout.RIGHTFlowLayout布局对象调用setHgap(int hgap)方法和setVgap(i

13、nt vgap)可以重新设置水平间隙和垂直间隙 2BorderLayout布局BorderLayout 布局是Window型容器的默认布局,例如JFrame、JDialog都是Window类的子类,它们的默认布局都是BorderLayout布局。BorderLayout也是一种简单的布局策略,如果一个容器使用这种布局,那么容器空间简单地划分为东、西、南、北、中五个区域,中间的区域最大。每加入一个组件都应该指明把这个组件加在哪个区域中,区域由BorderLayout中的静态常量CENTER、NORTH、SOUTH、WEST、EAST表示 每个区域只能放置一个组件,如果向某个已放置了组件的区域再放

14、置一个组件,那么先前的组件将被后者替换掉。使用BorderLayout布局的容器最多能添加5个组件,如果容器中需要加入超过5个组件,就必须使用容器的嵌套或改用其它的布局策略。3CardLayout 布局使用CardLayout 的容器可以容纳多个组件,这些组件被层叠放如容器中,最先加入容器的是第一张(在最上面),依次向下排序。使用该布局的特点是,同一时刻容器只能从这些组件中选出一个来显示,就像叠“扑克牌”,每次只能显示其中的一张,这个被显示的组件将占据所有的容器空间。假设有一个容器con,那么,使用CardLayout的一般步骤如下:创建CardLayout对象作为布局,使用容器的setLay

15、out()方法为容器设置布局,容器调用add(String s,Component b)将组件b加入容器,并给出了显示该组件的代号s。组件的代号是一个字符串,和组件的名字没有必然联系,但是,不同的组件代号必须互不相同。最先加入con的是第一张,依次排序。创建的布局card用CardLayout类提供的show()方法,显示容器con中组件代号为s的组件:card.show(con,s);3GridLayout布局GridLayout是使用较多的布局编辑器,其基本布局策略是把容器划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小格中。GridLayout比较灵活,划分多少网格由程序自由控

16、制,而且组件定位也比较精确,使用GridLayout布局编辑器的一般步骤如下:使用GridLayout的构造方法GridLayout(int m,int n)创建布局对象,指定划分网格的行数m和列数n,使用GridLayout布局的容器调用方法add(Component c)将组件c加入容器,组件进入容器的顺序将按照第一行第一个、第一行第二个、第一行最后一个、第二行第一个、最后一行第一个、最后一行最后一个。使用GridLayout布局的容器最多可添加mn个组件。GridLayout布局中每个网格都是相同大小并且强制组件与网格的大小相同。5BoxLayout布局用BoxLayout类可以创建一个

17、布局对象,称为盒式布局。BoxLayout在包中。javax.swing包提供了Box类,该类也是Container类的一个子类,创建的容器称作一个盒式容器,盒式容器的的默认布局是盒式布局,而且不允许更改盒式容器的布局。因此,在策划程序的布局时,可以利用容器的嵌套,将某个容器嵌入几个盒式容器,达到你的布局目的。使用盒式布局的容器将组件排列在一行或一列,这取决于创建盒式布局对象时,是否指定了是行排列还是列排列。使用BoxLayou的构造方法BoxLayout(Container con,,int axis)可以创建一个盒式布局对象 行型盒式布局容器中添加的组件的上沿在同一水平线上。列型盒式布局容

18、器中添加的组件的左沿在同一垂直线上。容器的目的是向其添加组件,并根据需要设置合理的布局。如果需要一个盒式布局的容器,可以使用Box类的类(静态)方法 createHorizontalBox()获得一个具有行型盒式布局的盒式容器;使用Box类的类(静态)方法 createVerticalBox()获得一个具有列型盒式布局的盒式容器。如果想控制盒式布局容器中组件之间的距离,就需要使用水平支撑组件或垂直支撑组件。Box类调用静态方法createHorizontalStrut(int width)可以得到一个不可见的水平Struct对象,称做水平支撑。该水平支撑的高度为0,宽度是width。Box类调

19、用静态方法createVertialStrut(int height)可以得到一个不可见的垂直Struct对象,称做垂直支撑。参数height决定垂直支撑的高度,垂直支撑的宽度为0。一个行型盒式布局的容器,可以在组件之间插入水平支撑来控制组件之间的距离。一个列型盒式布局的容器,可以在组件之间插入垂直支撑来控制组件之间的距离 6null布局可以把一个容器的布局设置为null布局(空布局)。空布局容器可以准确地定位组件在容器的位置和大小。setBounds(int a,int b,int width,int height)方法是所有组件都拥有的一个方法,组件调用该方法可以设置本身的大小和在容器中的

20、位置。15.4.1 事件处理模式 1事件源能够产生事件的对象都可以成为事件源,如文本框、按钮、下拉式列表等。也就是说,事件源必须是一个对象,而且这个对象必须是Java认为能够发生事件的对象。2监视器。我们需要一个对象对事件源进行监视,以便对发生的事件作出处理。事件源通过调用相应的方法将某个对象注册为自己的监视器 事件源注册监视器之后,相应的操作就会导致相应的事件的发生,并通知监视器,监视器就会作出相应的处理。3处理事件的接口。监视器负责处理事件源发生的事件。监视器是一个对象,为了处理事件源发生的事件,监视器这个对象会自动调用一个方法来处理事件。那么监视器去调用哪个方法呢?我们已经知道,对象可以

21、调用创建它的那个类中的方法,那么它到底调用该类中的哪个方法呢?Java规定:为了让监视器这个对象能对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,即必须在类体中重写接口中所有方法,那么当事件源发生事件时,监视器就自动调用被类重写的某个接口方法。发生发生图15.6 处理事件示意图XXX事件事件源.addXXXListener(监视器)class A implements XXXListener类A负责创建监视器,A必须实现XXXListenet接口通知通知监视器回调接口方法监视器回调接口方法接口方法1ActionEvent事件源文本框、按纽、菜单项、密码框和单选按纽都可以

22、触发ActionEvent事件,即都可以成为ActionEvent事件的事件源。比如,对于注册了监视器的文本框,在文本框获得输入焦点后,如果用户按回车键,Java运行环境就自动用ActionEvent类创建一个对象,即触发ActionEvent事件;对于注册了监视器的按纽,如果用户按单击按纽,就会触发ActionEvent事件;对于注册了监视器的菜单项,如果用户按选中该菜单项,就会触发ActionEvent事件;如果用户按选择了某个单选按纽,就会触发ActionEvent事件。2注册监视器能触发ActionEvent事件的组件使用addActiomListener(ActionListener

23、 listen)将实现ActionListener接口的类的实例注册为事件源的监视器。3ActionListener接口ActionListener接口在包中,该接口中只有一个方法:public void actionPerformed(ActinEvent e)事件源触发ActionEvent事件后,监视器将发现触发的ActionEvent事件,然后调用接口中的方法:actionPerformed(ActinEvent e)对发生的事件作出处理。当监视器调用actionPerformed(ActinEvent e)方法时,ActionEvent类事先创建的事件对象就会传递给该方法的参数e。4

24、ActionEvent类中的方法ActionEvent类有如下常用的方法:public Object getSource()public String getActionCommand()1ItemEvent事件源选择框、下拉列表都可以触发ItemEvent事件。选择框提供两种状态,一种是选中,另一种是未选中,对于注册了监视器的选择框,当用户的操作使得选择框从未选中状态变成选中状态或从选中状态变成未选中状态时就触发ItemEvent事件;同样,对于注册了监视器的下拉列表,如果用户按选中下拉列表中的某个选项,就会触发ItemEvent事件。2注册监视器能触发ItemEvent事件的组件使用add

25、ItemListener(ItemListener listen)将实现ItemListener接口的类的实例注册为事件源的监视器。3ItemListener接口ItemListener接口在包中,该接口中只有一个方法:public void itemStateChanged(ItemEvent e)事件源触发ItemEvent事件后,监视器将发现触发的ItemEvent事件,然后调用接口中的方法:itemStateChanged(ItemEvent e)对发生的事件作出处理。当监视器调用itemStateChanged(ItemEvent e)方法时,ItemEvent类事先创建的事件对象就

26、会传递给该方法的参数e。ItemEvent事件对象除了可以使用getSource()方法返回发生Itemevent事件的事件源外,也可以使用getItemSelectable()方法返回发生Itemevent事件的事件源。1DocumentEvent事件源文本区含有一个实现Document接口的实例,该实例被称做文本区所维护的文档,文本区调用getDocument()方法返回所维护的文档。文本区所维护的文档能触发DocumentEvent事件。需要特别注意的是,DocumentEvent不在包中,而是在包中。用户在文本区中进行文本编辑操作,使得文本区中的文本区内容发生变化,将导致文本区所维护的

27、文档模型中的数据发生变化,从而导致文本区所维护的文档触发DocumentEvent事件。2注册监视器能触发DocumentEven事件的事件源使用addDucumentListener(DocumentListener listen)将实现DocumentListener接口的类的实例注册为事件源的监视器。3DocumentListener接口DocumentListener接口在包中,该接口中有三个方法:public void changedUpdate(DocumentEvent e)public void removeUpdate(DocumentEvent e)public void

28、insertUpdate(DocumentEvent e)事件源触发DucumentEvent事件后,监视器将发现触发的DocumentEvent事件,然后调用接口中的相应方法对发生的事件作出处理。1使用MouseListener接口处理鼠标事件使用MouseListener接口可以处理以下5种操作触发的鼠标事件:在事件源上按下鼠标键。在事件源上释放鼠标键。在事件源上击鼠标键。鼠标进入事件源。鼠标退出事件源。MouseEvent 中有下列几个重要的方法:getX()获取鼠标指针在事件源坐标系中的x-坐标。getY()获取鼠标指针在事件源坐标系中的y-坐标。getModifiers()获取鼠标的

29、左键或右键。鼠标的左键和右键分别使用InputEvent类中的常量BUTTON1_MASK和BUTTON3_MASK来表示。getClickCount()获取鼠标被单击的次数。getSource()获取发生鼠标事件的事件源。事件源注册监视器的方法是addMouseListener(MouseListener listener)。MouseListener接口中有如下方法:mousePressed(MouseEvent)mouseReleased(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClicked(Mous

30、eEvent)2使用MouseMotionListener接口处理鼠标事件使用MouseMotionListener接口可以处理以下两种操作触发的鼠标事件。在事件源上拖动鼠标在事件源上移动鼠标鼠标事件的类型是MouseEvent,即当发生鼠标事件时,MouseEvent类自动创建一个事件对象。事件源注册监视器的方法是addMouseMotionListener(监视器MotionListener listener)。MouseMotionListener接口中有如下方法。mouseDragged(MouseEvent)mouseMoved(MouseEvent)组件可以触发焦点事件。组件可以使

31、用addFocusListener(FocusListener listener)注册焦点事件监视器。当组件获得焦点监视器后,如果组件从无输入焦点变成有输入焦点或从有输入焦点变成无输入焦点都会触发FocusEvent事件。创建监视器的类必须要实现FocusListener接口,该接口有两个方法:public void focusGained(FocusEvent e)public void focusLost(FocusEvent e)用户通过单击组件可以使得该组件有输入焦点,同时也使得其它组件变成无输入焦点。一个组件也可调用public boolean requestFocusInWindo

32、w()方法可以获得输入焦点。当按下、释放或敲击键盘上一个键时就触发了键盘事件,在Java事件模式中,必须要有发生事件的事件源。当一个组件处于激活状态时,敲击键盘上一个键就导致这个组件触发键盘事件。使用KeyListener接口处理键盘事件,该中有如下3个方法。public void keyPressed(KeyEvent e)public void keyTyped(KeyEvent e)public void KeyReleased(KeyEvent e)让事件源所在的类的实例作为监视器,能让事件的处理比较方便,这是因为,监视器可以方便的操作事件源所在的类中的其他成员。当事件的处理比较简单,

33、系统也不复杂时,让事件源所在的类的实例作为监视器是一个不错的选择。但是,当事件的处理比较复杂时,使用当前窗口会让系统缺乏弹性,因为每当修改处理事件的代码时都将导致事件源所在的类的代同时被编译,反之也是。1授权模式Java的事件处理是基于授权模式,即事件源调用调用方法将某个对象注册为自己的监视器。2接口回调Java语言使用接口回调技术实现处理事件的过程。addXXXListener(XXXListener listener)方法中的参数是一个接口,listener可以引用任何实现了该接口的类所创建的对象,当事件源发生事件时,接口listener立刻回调被类实现的接口中的某个方法。3.方法绑定从方

34、法绑定角度看,Java将某种事件的处理绑定到对应的接口,即绑定到接口中的方法,也就是说,当事件源触发事件发生后,监视器准确知道去调用哪个方法。4.保持松藕合监视器和事件源应当保持是一种松藕合关系,也就是说尽量让事件源所在的类和监视器是组合关系,尽量不要让事件源所在的类的实例、以及它的子类的实例或内部类、匿名类的实例做监视器。也就是说,当事件源触发事件发生后,系统知道某个方法会被执行,但无须关心到底是哪个对象去调用了这个方法,因为任何实现接口的类的实例(做为监视器)都可以调用这个方法来处理事件。MVC是一种通过三个不同部分构造一个软件或组件的理想办法:模型(model)用于存储数据的对象。视图(

35、view)为模型提供数据显示的对象。控制器(controller)处理用户的交互操作,对于用户的操作作出响应,让模型和视图进行必要的交互,即通过视图修改、获取模型中的数据;当模型中的数据变化时,让视图更新显示。JDialog类和JFrame都是Window的子类,二者的实例都是底层容器,但二者有相似之处也有不同的地方,主要区别是,JDialog类创建的对话框必须要依赖于某个窗口。对话框分为无模式和有模式两种。如果一个对话框是有模式的对话框,那么当这个对话框处于激活状态时,只让程序响应对话框内部的事件,而且将堵塞其它线程的执行,用户不能再激活对话框所在程序中的其它窗口,直到该对话框消失不可见。无

36、模式对话框处于激活状态时,能再激活其它窗口,也不堵塞其它线程的执行。消息对话框是有模式对话框,进行一个重要的操作动作之前,最好能弹出一个消息对话框。可以用javax.swing包中的JOptionPane类的静态方法:public static void showMessageDialog(Component parentComponent,String message,String title,int messageType)创建一个消息对话框输入对话框含有供用户输入文本的文本框、一个确认和取消按钮,是有模式对话框。当输入对话框可见时,要求用户输入一个字符串。javax.swing包中的JO

37、ptionPane类的静态方法:public static String showInputDialog(Component parentComponent,Object message,String title,int messageType)可以创建一个输入对话框确认对话框是有模式对话框,可以用javax.swing包中的JOptionPane类的静态方法:public static int showConfirmDialog(Component parentComponent,Object message,String title,int optionType)得到一个确认对话框可以用j

38、avax.swing包中的JColorChooser类的静态方法:public static Color showDialog(Component component,String title,Color initialColor)创建一个有模式的颜色对话框文件对话框是一个从文件中选择文件的界面。javax.swing包中的JFileChooser类可以创建文件对话框,使用该类的构造方法JFileChooser()创建初始不可见的有模式的文件对话框。然后文件对话框调用下述2个方法:showSaveDialog(Component a);showOpenDialog(Component a);都

39、可以使得对话框可见,只是呈现的外观有所不同,showSaveDialog方法提供保存文件的界面,showOpenDialog方法提供打开文件的界面创建对话框与创建窗口类似,通过建立JDialog的子类来建立一个对话框类,然后这个类的一个实例,即这个子类创建的一个对象,就是一个对话框。对话框是一个容器,它的默认布局是BorderLayout,对话框可以添加组件,实现与用户的交互操作以下是构造对话框的2个常用构造方法。JDialog()构造一个无有标题的初始不可见的对话框,对话框依赖一个默认的不可见的窗口,该窗口由Java运行环境提供。JDialog(JFrame owner)构造一个无标题的初始

40、不可见的无模式的对话框,owner是对话框所依赖的窗口,如果owner取null,对话框依赖一个默认的不可见的窗口,该窗口由Java运行环境提供。可以使用jar.exe把一些文件压缩成一个JAR文件,来发布我们的应用程序。我们可以把java应用程序中涉及到的类压缩成一个JAR文件,比如Tom.jar,然后使用java解释器(使用参数-jar)执行这个压缩文件,或用鼠标双击该文件,执行这个压缩文件。java -jar Tom.jar假设D:test目录中的应用程序有两个类A、B,其中A是主类。生成一个Jar文件的步骤如下:1首先用文本编辑器(比如Windows下的记事本)编写一个清单文件。Mymoon.mf:Manifest-Version:1.0Main-Class:ACreated-By:1.62生成JAR文件D:testjar cfm Tom.jar Mymoon.mf A.class B.class如果目录test下的字节码文件刚好是应用程序需要的全部字节码文件,也可以如下生成JAR文件:D:testjar cfm Tom.jar Mymoon.mf *.class

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁