ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:42.12KB ,
资源ID:21877043      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21877043.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java图形界面设计Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java图形界面设计Word下载.docx

1、 import javax.swing.JInternalFrame; import javax.swing.JPanel; public final class AwtSwing public static void main(String args) AwtSwing as = new AwtSwing(); as.show(); JFrame frame = new JFrame(Test AWT and SWING); JDesktopPane jdp = new JDesktopPane(); JInternalFrame jif1 = new JInternalFrame(cont

2、rols JInternalFrame jif2 = new JInternalFrame(cover public AwtSwing() frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(jdp); jif1.setContentPane(new JPanel(); jif2.setContentPane(new JPanel(); jif1.getContentPane().setLayout(new BorderLayout(); jif1.getContentPane().a

3、dd(new Button(AWT Button), BorderLayout.WEST ); jif1.getContentPane().add(new JButton(Swing Button), BorderLayout.EAST); jif1.setSize(200, 100); jif2.setSize(200, 100); jdp.add(jif1); jdp.add(jif2); frame.setSize(240, 140); public void show() frame.setVisible(true); jif1.setVisible(true); jif2.setVi

4、sible(true); 运行这个程序,并用鼠标拖动那个名为 并用鼠标拖动那个名为的子窗口,我们会发现一个非常有趣 我们会发现一个非常有趣 的现象,如图: 显然 cover 子窗口是在 controls 子窗口之上的,但是它只罩盖住了 Swing Button, 但是它只罩盖住了 没有罩盖住 AWT Button.再看一会儿 再看一会儿,你是不是有这样一种感觉:Swing Button 是画 Swing 上去的,而 AWT Button 则是 则是贴上去的.这就是二者混用造成层次错乱的一个例子 这就是二者混用造成层次错乱的一个例子. Swing 组件有美观,易用 易用,组件量大等特点,也有缺点

5、使用 Swing 组件的程序通 常会比使用 AWT 组件的程序运行更慢 但是大家都还是更喜欢用 Swing 组件 原因何在? 组件的程序运行更慢. 组件, 因为随着计算机硬件的升级,一点点速度已经不是问题.相反的,用户更需要美观的用户界 因为随着计算机硬件的升级 用户更需要美观的用户界 面,开发人员则更需要易用的开发组件 开发人员则更需要易用的开发组件. #p#分页标题#e# 框架, 二. 框架,监听器和事件 框架 (Frame, JFrame) 是 Java 图形用户界面的基础,它就是我们通常所说的窗口 它就是我们通常所说的窗口, 是 Windows/XWindow 应用程序的典型特征 说到

6、 Windows/XWindow, 应用程序的典型特征. 大家很容易联想到 事 件 (Event) 驱动.Java 的图形用户界面正是事件驱动的,并且由各种各样的监听器 (Listener) 负责捕捉各种事件. 如果我们需要对某一个组件的某种事件进行捕捉和处理时, 就需要为其添加监听器. 比 如, 我们要在一个窗口 (JFrame) 激活时改变它的标题, 我们就需要为这个窗口 (JFrame 对 象) 添加一个可以监听到激活窗口这一事件的监听器WindowListener. 怎么添加监听器呢?这通常由组件类提供的一个 addXxxxxListener 的方法来完成. 比 如 JFrame 就提

7、供有 addWindowListener 方法添加窗口监听器 (WindowListener). 一个监听器常常不只监听一个事件,而是可以监听相关的多个事件.比如 WindowListener 除了监听窗口激活事件 (windowActivate) 之外,还可以监听窗口关闭事 件 (windowClosing) 等. 那么这些事件怎么区分呢?就靠重载监听器类 (Class) 的多个方 法 (Method) 了.监听器监听到某个事件后,会自动调用相关的方法.因此我们只要重载这 个方法,就可以处理相应的事件了. 不妨先看一个例子: /* * (#) TestFrame.java * author

8、James */ import javax.swing.*; import java.awt.event.*; public class TestFrame extends JFrame private int counter = 0; public TestFrame() /* 使用匿名类添加一个窗口监听器 */ addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.out.println( Exit when Closed event /退出应用程序 System.exit

9、(0); public void windowActivated(WindowEvent e) / 改变窗口标题 setTitle(Test Frame + counter+); ); / 设置窗口为固定大小 setResizable(false); setSize(200, 150); public static void main(String args) TestFrame tf = new TestFrame(); tf.show(); 这个例子中, 我们设计了一个窗口类(public 我们设计了一个窗口类(public class TestFrame extends JFrame )

10、 ), 并且为这个窗口添加了一个窗口监听器 (addWindowListener(new WindowAdapter() ) ). 而我们添加的这个窗口监听器主要监听了两个事件:窗口关闭 (public void 而我们添加的这个窗口监听器主要监听了两个事件 windowClosing(WindowEvent e) ) 和窗口激活 (public void windowActivated(WindowEvent e) 在窗口关闭事件中我们退出了整个应用程序 ).在窗口关闭事件中我们退出了整个应用程序 (System.exit(0);), 而在窗口激活事件中, 而在窗口激活事件中 我们改变了窗口

11、的标题 (setTitle().最后,我们在 main 方法中显示了这窗口类的一个实例 我们在 方法中显示了这窗口类的一个实例,运行得到下图 所示的结果: 这个程序的运行结果就是一个什么东西都没有加的框架,也就是一个空窗口 这个程序的运行结果就是一个什么东西都没有加的框架 也就是一个空窗口.那么,你 知道显示一个窗口最主要的几句代码吗?不知道没关系, 知道显示一个窗口最主要的几句代码吗 我来告诉你, 显示一个窗口只需要 做三件事:生成实例(对象) )设置大小显示,相应的,就是下面的三句代码 的三句代码:Frames Title frame.setSize(400, 300); frame.se

12、tVisible(true); 也许你会说:第一句的意思我清楚,第三句的意思我也明白,为什么一定要第二句呢? 其实想想也就明白了,叫你画一个没法有大小的矩形你能画出来吗?不能.同样,没有大小 的窗口, 怎么显示?所以我们需要用 setSize(int width, int height) 方法为其设置大小. 我们还有另一种方法:用 JFrame 的 pack() 方法让它自己适配一个大小.pack() 在多数 时候是令人满意的,但有时,它也会让你哭笑不得多试试就知道了. 在 JFrame 中,我们使用 addWindowListener 方法加入一个监听器 WindowListener (ad

13、dWindowListener(new WindowAdapter() ) 去监听发生在 JFrame 上的窗口事件. WindowListener 是一个接口,在 java.awt.event 这个包中,但是上例中好象并没有使用 WindowListener,而是使用的 WindowsAdapter 吧,这是怎么回事? WindowAdapter 是 WindowsListener 接口的一个最简单的实现, 也在 java.awt.event 包中. 如果我们直接使用 WindowListener 产生一个类, 需要实现它的每一个方法 (一共 7 个). WindowAdapter 作为 W

14、indowListener 最简单的实现, 但 已经实现了它的每一个方法 为空方法 (即只包含空语句, 或者说没有语句的方法). WindowAdapter 就只需要重载可 用 能用到的方法 (上例中只有 2 个) 就行了,而不需要再去实现每一个方法.优点显而易见 减少编码量. 在 JFrame 上发生的窗口事件 (WindowEvent) 包括: windowActivated(WindowEvent e) windowClosed(WindowEvent e) windowClosing(WindowEvent e) windowDeactivated(WindowEvent e) win

15、dowDeiconified(WindowEvent e) windowIconified(WindowEvent e) windowOpened(WindowEvent e) 窗口得到焦点时触发 窗口关闭之后触发 窗口关闭时触发 窗口失去焦点时触发 窗口打开之后触发 上例重载了其中两个方法. 如果在上例运行产生的窗口和另外一个应用程序窗口之间来 回切换 (在 Windows 操作系统中你可以使用 Alt+Tab 进行切换)试试看,你发现了什 么?有没有现我们的示例窗口标题上的数字一直在增加,这便是在 windowActivated 事件 中 setTitle( + counter+) 的功劳

16、. 而另一个事件处理函数 windowClosing 中的 System.exit(0) 则保证了当窗口被关闭 时退出当前的 Java 应用程序. 如果不作这样的处理会怎样呢?试验之后你会发现, 窗口虽 然关闭了,但程序并没有结束,但此时,除了使用 Ctrl+C 强行结束之外,恐怕也没有其它 办法了.所以,这一点非常重要:你想在关闭窗口的时候退出应用程序,那就需要处理 windowClosing 事件.也不尽然,其实还有另外一个更简单的办法,让 JFrame 自己处 理这件事你只需要如下调用 JFrame 的 setDefaultCloseOperation 即可: frame.setDefa

17、ultCloseOperation(JFrame.EXIT_ON_CLOSE); 在产生 JFrame 对象之后执行上述语句, 就可以不用处理 windowsClosing 事件来退出 程序了. 我们可以在 JFrame 对象中添加 AWT 或者 Swing 组件.但是,虽然它有 add 方法, 却不能直接用于添加组件, 否则崤壮鲆斐! 恍啪褪允浴T斐烧飧鱿窒蟮脑蛑挥幸桓鼋 馐停篔 Frame 不是一个容器,它只是一个框架.那么,应该怎么添加组件呢? JFrame 有一个 Content Pane,窗口是显示的所有组件都是添加在这个 Content Pane 中. JFrame 提供了两个方法

18、: getContentPane 和 setContentPane 就是用于获取和设置其 Content Pane 的.通常我们不需要重新设置 JFrame 的 Content Pane,只需要直接获取默 认的 Content Pane 来添加组件等.如:(new JFrame().getContentPane().add(new Button(test button). #p#分页标题#e# 按钮,切换按钮, 三. 按钮,切换按钮,复选按钮和单选按钮 按钮就是按钮,不会连按钮都不知道吧? 切换按钮, 有两种状态的按钮, 即按下状态和弹起状态, 若称为选择状态或未选择状态. 复选按钮,又叫复选

19、框,用一个小方框中是否打勾来表示两种状态. 单选按钮,又叫收音机按钮,以小圆框打点表示被选中.常成组出现,一组单选按钮中 只有一个能被选中. 发现什么了吗?对了, 这一部分是在讲各种各样的按钮, 而且后三种按钮都有两种 状态.先看看这些按钮都长成什么样: 依次就是按钮,切换按钮,复选按钮和单选按钮. .图示的窗口,就 上图中,从上到下,依次就是按钮 是下面这个例子的运行结果: 是下面这个例子的运行结果 /* * TestButtons.java * author Fancy */ import java.awt.event.ActionEvent; import java.awt.event.

20、ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.ButtonGroup; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JRadioButton; import javax.swing.JToggleButton; public final class TestButtons public static void main(Stri

21、ng args) TestButtons tb = new TestButtons(); tb.show();Test Buttons JButton jButton = new JButton(JButton / 按钮 JToggleButton toggle = new JToggleButton(Toggle Button / 切换按钮 JCheckBox checkBox = new JCheckBox(Check Box / 复选按钮 JRadioButton radio1 = new JRadioButton(Radio Button 1 / 单选按钮 JRadioButton r

22、adio2 = new JRadioButton(Radio Button 2 JRadioButton radio3 = new JRadioButton(Radio Button 3 JLabel label = new JLabel(Here is Status, look here. / 不是按钮, 是静 态文本 public TestButtons() frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new java.awt.FlowLayout(); / 为

23、一般按钮添加动作监听器 jButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) label.setText(You clicked jButton / 为切换按钮添加动作监听器 toggle.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae) JToggleButton toggle = (JToggleButton) ae.getSource(); if

24、(toggle.isSelected() label.setText(You selected Toggle Button else label.setText(You deselected Toggle Button ); / 为复选按钮添加条目监听器 checkBox.addItemListener(new ItemListener() public void itemStateChanged(ItemEvent e) JCheckBox cb = (JCheckBox) e.getSource(); label.setText(Selected Check Box is + cb.isS

25、elected(); / 用一个按钮组对象包容一组单选按钮 ButtonGroup group = new ButtonGroup(); / 生成一个新的动作监听器对象,备用 ActionListener al = new ActionListener() public void actionPerformed(ActionEvent ae) JRadioButton radio = (JRadioButton) ae.getSource(); if (radio = radio1) label.setText(You selected Radio Button 1 else if (radi

26、o = radio2) label.setText(You selected Radio Button 2You selected Radio Button 3 ; / 为各单选按钮添加动作监听器 radio1.addActionListener(al); radio2.addActionListener(al); radio3.addActionListener(al); / 将单选按钮添加到按钮组中 group.add(radio1); group.add(radio2); group.add(radio3); frame.getContentPane().add(jButton); fr

27、ame.getContentPane().add(toggle); frame.getContentPane().add(checkBox); frame.getContentPane().add(radio1); frame.getContentPane().add(radio2); frame.getContentPane().add(radio3); frame.getContentPane().add(label); frame.setSize(200, 250); 除一般按钮外, 其余三种按钮都有两种状态, 即选择 (按下) 状态和未选择 (弹起) 状 态.那么我们又该如何判断呢?切

28、换按钮 (JToggleButton) 提供了一个 isSelected() 方 法用来判断当前所处的状态,返回值为真 (true) 时表示它处于选择状态,返回值为假 (false) 时表示它处于未选择状态. 而复选按钮 (JCheckBox) 和单选按钮 (JRadioButton) 都是从 JToggleButton 继承的,所以也具有 isSelected() 方法.如上例中 if (toggle.isSelected() 等. 单选按钮由自身的特点决定了它们必须成组出现, 而且一组中只能有一个能被选中. 因 此我们需要用一个专门的类,ButtonGroup 来管理.添加到 ButtonGroup 的多个单选按钮 中,如果有一个被选择中,同组中的其它单选按钮都会自动改变其状态为未选择状态.在 ButtonGroup 中添加按钮,是使用它的 add 方法,如上例中的 group.add(radio1);. 既然我们已经将多个单选按钮添加到一个 ButtonGroup 中了,那么我们是不是可以将 一个

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1