- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模块十 Swing组件概述
1.Swing概述
Java1.0刚出现时,包含一个用于基本GUI编程的类库,Sun把它叫做抽象窗口工具箱(Abstract Window Toolkit,AWT).基本AWT库处理用户界面元素的方法是把这些元素的创建和行为委托给每个目标平台(Windows,Solaris,Macintosh等)上的本地GUI工具进行处理。不同平台的AWT用户界面存在着不同的bug。程序员们必须在每一个平台上测试他们的应用程序,他们因此嘲笑AWT是“一次编写,到处调试”。在1996年,Netscape开发了一个工作方式完全不同的GUI库,他们把它叫做IFC(Internet Foundation Classes,因特网基础类集)。用户界面元素,如按钮,菜单等,是绘制到空白窗口上的。因此,Netscape的IFC部件在程序运行的所有平台上看起来都一样。Sun和Netscape合作完善了这种方法,创建了一个新的用户界面库,它的代码名是“Swing”(有时也叫作“Swing集”)。从此才真正实现了“一次编写,到处运行”的口号。另外,Swing只是提供了更好的用户界面组件而已。AWT的基本体系结构,尤其是事件处理模型,从Java1.1版后并没有改变。
Swing有以下的优势:
Swing具有更丰富,更方便的用户界面元素集合。
Swing对低层平台的依赖更少;因此和平台有关的bug也少的多。
Swing给不同平台上的用户一致的感觉。
2.创建框架
Java中的顶层窗口(即:那些没有包含在其他窗口中的窗口)被称为框架。
例如: SimpleJFrameTest.java
import javax.swing.*;
public class SimpleJFrameTest
{
public static void main(String[] args)
{
SimpleJFrame fram=new SimpleJFrame();
fram.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fram.show(); //fram.setVisible(true);
}
}
class SimpleJFrame extends JFrame
{
public static final int WIDTH=400;
public static final int HEIGHT=300;
public SimpleJFrame()
{
setSize(WIDTH,HEIGHT);
}
}
注解:大部分Swing组件类的名字都是以“J”开头,如JButton,JFrame,JTextField等等。Java中也有着Button,Frame类,不过它们都是AWT组件。如果你不小心忘了写Swing组件前的“J”,程序还是很可能能够编译和运行,不过由于混杂了Swing和AWT组件,在视觉和响应上可能会有不一致的地方。
3.给框架定位
JFrame类本身只有几个用来改变框架外观的类。当然,通过继承,JFrame从不同的超类中继承来很多用于处理框架大小和位置的方法。下面列出几个可能最为重要的方法:
dispose方法----关闭窗口并收回用于创建窗口的任何资源;
setIconImage方法----当窗口最小化时,把一个Image对象用作图标。
setTitle方法-----改变标题栏中的文字。
setResizable方法—使用boolean参数来决定框架大小是否能被用户改变。
setLocation方法----用来显示组件在容器中的位置(对于框架来说,方法中的参数坐标是相对于整个屏幕而言的,对于容器内的组件,坐标是相对于容器的)。
setBounds方法----同上,只不过它带有四个参数(其中前两个参数同上,都是设置组件的位置,后两个参数用来设置组件的大小)。
Toolkit工具的介绍
4.在面板中显示信息
JFrame与Frame不同的是,在JFrame中加组件是加在内容窗格里的。如:
Container contentPane=frame.getContentPane(); //用上例中的 frame对象
JComponent c=…;
contentPane.add(c);
如果你只需要在框架中显示一个Swing组件,那么你可以用下面的方式把组件放置到内容窗格中。
Frame.setContentPane(c);
面板是也是个容器。它可以再放其他的组件,我们可以设计自己的面板:
定义一个扩展JPanel的新类
覆盖paintComponen
文档评论(0)