AWT、Swing总结

滚动显示效果:
http://blog.csdn.net/mq612/article/details/1218022

myecplise9开发swing图形界面代码生成器使用方法(只有myecplise9或以上版本才自带swing代码生成工具):File--new other--Myecplise下面的Swing下面的Matisse Form--Next--在这个界面为java文件起名字并选择新建的界面类型,一般选择JFrame--Finish--然后就打开新建的文件了,在左边的Matisse Palette界面(如果没有的话就show view开此界面)上选择各种swing控件拖拽到右边自己新建的界面上就好了,代码会自动生成到同目录下的相同名称的java文件里面


jdk提供了一些用纯java写的图形用户界面的小案例,具体在jdk的安装目录下面的jdk1.6.0_12\demo\jfc里面都是一个个的小案例,双击里面的jar文件就能看到效果。



AWT概念:
GUI是Graphical User Interface,即图形用户界面。根据作用GUI组件可分为基本组件和容器。组件又称构件,诸如按钮、文本框之类的图形界面元素。
容器其实是一种比较特殊的组件,可以容纳其他组件,如窗口、对话框等。
所有容器类都是java.awt.Container的直接或间接子类。

Container,它是Component的一个子类,而且包括两个主要子类
--Panel
--window


AWT(Abstract Window Toolkit),抽象窗口工具包,SUN公司提供的用于图形界面编程(GUI)的类库。基本的AWT库处理用户界面元素的方法是把这些元素的创建和行为委托给每个目标平台上(Window、Unix、Macintosh等)的目的GUI工具进行处理。例如:如果我们使用AWT在一个Java窗口中放置一个那妞,那么实际上使用的是一个具有本地外观和感觉的按钮。这样,从理论上来说,我们所编写的图形界面程序能运行在任何一个平台上,做到了图形界面程序的跨平台运行。


Container
-- Container的两个主要类型是Window和Panel
--Window是Java.awt.Window的对象
Window是java.awt.Window的对象。Window是显示屏上独立的本机窗口,它独立于其它容器。
Window有两种形式:Frame(框架)和Dialog(对话框)。Frame和Dialog是Window的子类。
Frame是一个带有标题和缩放角的窗口。对话框没有菜单条。尽管它能移动,但它不能缩放。


Panel是Java.awt.Panel的对象
--Panel是Java.awt.Panel的对象。Panel包含在另一个容器中,或是在Web浏览器的窗口中。Panel确定一个四边形,其它组件可以放入其中。 Panel必须放在Window之中(或Window的子类中)以便能显示出来。
--注:容器不但能容纳组件,还能容纳其他容器,这一事实对于建立复杂的布局是关键的,也是基本的。

1、容器里的组件的位置和大小是由布局管理器决定的。
2、可以通过停用布局管理器来控制组件的大小或位置。
3、然后必须使用组件上的setLocation()、setSize()、或setBounds()来定位他们在容器里的位置。


容器里的组件的位置和大小是由布局管理器决定的。容器对布局管理器的特定实例保持了一个引用。当容器需要定位一个组件时,它将调用布局管理器来做。当决定一个组件的大小时,同样如此。布局管理器完全控制容器内的所有组件,它负责计算并定义上下文中对象在实际屏幕中所需的大小。




Frames详解:
1、是Window的子类。
2、具有辩题和缩放角
3、从容器继承并以add方式添加组件。
4、能一字符串规定的标题来创建不可见框架对象。
5、能将BorderLayout当做缺省布局管理器
6、用setLayout方式来改变缺省布局管理器
Frame是Window的一个子类。它是带有标题和缩放角的窗口。它继承于Java.awt.Container,因此,可以用add()方式来给框架添加组件。框架的缺省布局管理器就是Borfer Layout。它可以用setLayout()方式来改变。


在框架显示在屏幕上之前,必须做成可见的(通过调用程序setVisible(true)),而且其大小是确定的(通过调用程序setSize()或pack())。


Panels详解:
1、为组件提供空间。
2、允许子面板拥有自己的布局管理器。
3、以add方法添加组件:
a)像Frames一样,Panels提供空间来连接任何GUI组件,包括其他面板。每个面板都可以有它自己的布局管理程序。
b)一旦一个面板对象被创建,为了能看得见,它必须添加到窗口或框架对象上。用Container类中的add()方式可以做到这一点。


容器里组件的位置和大小是由布局管理器来决定的。容器对布局管理器的特定实例保持一个引用。当容器需要定位一个组件时,它将调用布局管理器来完成。当决定一个组件的大小时,也是如此。
在AWT中,给我们提供了五种布局管理器:
BorderLayout
FlowLayout
GridLayout
CardLayout
GridBagLayout


容器中组件的布局通常由布局管理器控制。每个Container(比如一个Panel或一个Frame)都有一个与它相关的缺省布局管理器,它可以通过调用setLayout()来改变。
布局管理器负责决定布局方针以及其容器的每一个子组件的大小。


默认布局管理器:如附件“布局管理器.jpg”




Flow布局管理器:
1、与其他布局管理器不一样,Flow布局管理器不限制它所管理的组件的大小,而是允许它们有自己的最佳大小。
2、默认是居中放置组件。
3、如果想再组件之间创建一个更大的最小间隔,可以规定一个界限。
4、当用户对由Flow布局管理的区域进行缩放时,布局就发生变化。

下面的例子就是如何用类容器的setLayout()方法来创建Flow布局对象并安装它们
--setLayout(new FlowLayout(int align,int hgap, int vgap));
--对齐的值必须是FlowLayout.LEFT, FlowLayout.RIGHT,或FlowLayout。CENTER
--例如:
--setLayout(new FlowLayout(FlowLayout.RIGHT,20,40));

New FlowLayout(FlowLayout.RIGHT,20,40);右对齐,组件之间水平间距20个像素,竖直间距40个像素。
New FlowLayout(FlowLayout.LEFT);右对齐,水平和竖直间距为缺省值:5;
New FlowLayout();使用缺省的居中对齐方式,水平和竖直间距为缺省值:5;


Border布局管理器:
1、Border布局管理器为在一个Panel或Window中放置组件提供一个更复杂的方案。Border布局管理器包括五个明显的区域:东南西北中。
2、北占据面板的上方,东占据面板的右侧,等等。中间区域是在东南西北都填满后剩下的区域。当窗口垂直延伸时,东西中区域也延伸;而当窗口水平延伸时,东西中区域也延伸
3、当窗口缩放时,按钮相应的位置不变化,但其大小改变。


BorderLayout是Frame类的默认布局管理器。
BorderLayout将整个容器的布局划分为东、西、南、北、中五个区域,组件只能被添加到指定的区域。
如不指定组件的加入部位,则默认加入到Center区域。
每个区域只能加入一个组件,如加入过个,则先前加入的组件会被遗弃。


Flow布局管理器FlowLayout:
与其他布局管理器不一样,Flow布局管理器不限制它所管理的组件的大小,而是允许它们有自己的最佳大小。
默认是居中放置组件。
如果想再组件之间创建一个更大的最小间隔,可以规定一个界限。
当用户对由Flow布局管理器的区域进行缩放时,布局就发生变化。



Grid布局管理器GridLayout………【网格的形式】,想要了解的话再去看视屏,里面有详细讲解,这里没有做笔记。



布局管理器总结:
Frame:
--Frame是一个顶级窗口。
--Frame的缺省布局管理器为BorderLayout.

Panel:
--Panel无法单独显示,必须添加到某个容器中。
--Panel的缺省布局管理器为FlowLayout。
--当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。因此。可以利用Panel使得BorderLayout中某个区域显示多个组件。


在程序中安排组件的位置和大小时,应注意(做一般性的开发最好还是使用jdk为我们提供的布局管理器,巧妙的多利用一些Panel等容器,做出来效果也挺好,最好不要使用自己定义设定的布局管理器,自定义的一般要考虑的因素太多,一般很难做好):
1、容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性。如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。
2、如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:
setLayout(null);


下面是一个简单的示例,自己练习下,里面涉及到两种布局管理器:
package com.shengshiyuan.awt;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;

public class ExGui3 {
	private Frame frame;

	private Panel panel;

	private Button b1, b2, b3, b4;

	public void go() {
		// Frame默认布局管理器BorderLayout
		frame = new Frame("complex layout");

		b1 = new Button("West");
		b2 = new Button("hello");

		frame.add(b1, BorderLayout.WEST);
		frame.add(b2, BorderLayout.CENTER);

		// Panel默认布局管理器FlowLayout
		panel = new Panel();

		b3 = new Button("world");
		b4 = new Button("welcome");

		panel.add(b3);
		panel.add(b4);

		frame.add(panel, BorderLayout.NORTH);// 将panel放到北面

		frame.pack();// 压缩页面
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		ExGui3 gui3 = new ExGui3();
		gui3.go();
	}
}


Swing是第二代GUI开发工具,和AWT非常类似,下面讲解一些Swing的知识

1、Swing:
---是第二代GUI开发工具;
---它建立在AWT之上,但用新版本的组件替代了旧版本的组件;
---它提供了许多新的组件和相关的API。


关于Swing我们经常用到的有两个包:
--javax.swing;
--javax.swing.event


顶层容器:
Java提供了三个顶层容器:JFrame、JDialog,和JApplet。很多类的命名和AWT里的类命名类似,只是在前面加了一个J。
特点:
---显示在屏幕上的每个组件都必须在一个包含继承中。每一个包含继承都有一个顶层容器作为它的根。
---每一个顶层容器都有一个Content pane,它包含了顶层容器中的所有组件。
---菜单在顶层容器中,但在content pane之外。



1、在Content Pane中添加组件有两种方式:
---topLevelContainer.getContentPane().add(yellowLabel, BorderLayout.CENTER);
---JPanel contentPane = new JPanel();topLevelContainer.setContentPane(contentPane);
2、添加菜单条:
JMenuBar cyanMenuBar = new JMenuBar();
Frame.setJMenuBar(cyanMenuBar);


JFrame是一个带有标题和可变大小边框的窗口。任何一个图形界面应用程序都必须至少有一个JFrame。

Color类:
---Color类将颜色按照sRGR标准格式进行封装,该格式中红、绿、蓝三原色的取值范围都是0~255。
---Color类定义了多个构造方法,常用的有:
Public Color(int r,int g,int b)
Public Color(int r,int g,int b, int a)//a为透明度参数
Color c = new Color(200,170,90);
Color d = new Color(200,170,90,120);
---在GUI设计中使用Color类:
Button b = new Button(“Test”);
Color c = new Color(200,170,90);
b.setBackground(c);



附件里面的实例代码是一些常见的Swing界面java代码汇总。

你可能感兴趣的:(swing)