java GUI

12.25!~12.27
GUI
1 容器,部件
2 事件处理

awt和swing的特点:
awt(抽象窗口工具集)是依赖操作系统的GUI.
能够显示出来的组件是不同操作系统的共有组件.(但是不太好看.)
swing(模拟GUI组件)速度比awt要慢的多.
swt(sun公司的,是swing和awt的综合体)如果swt产生的组件awt有就直接调用, 没有就模拟出来.这样既解决了跨平台的问题,也解决了速度慢的问题.


低层容器:容器是包含其他组件的组件.
JFrame,JApplet,JDialog. 

布局管理器:
标准布局,自由布局.

GUI三个步骤:
1.选择容器
2.为容器设置布局方式
3.为容器填加组件

导入3个包
import javax.swing.*;
import java.awt.*;
import awt.event.*;

GUI底层容器的实现方式
第一种:
JFrame jf = new JFrame();  //拿一个容器
jf.setLayout(null);       
JButton jb = new JButton();
jb.setBounds(0,0,20,20);  //绝对布局
jf.add(jb);

this.setSize(200,200);
this.setVisible(true);

第二种:
类 extends JFrame   //让自己的类变成容器
申明组件;
public 类
{
 Container ct = this.getContentPane();
 ct.add();
 this.setSize();
 this.setVisible();
}

this.setCursor(new Cursor(Cursor.HAND_CURSOR));  //变手

Image image = new ImageIcon("Sunset.jpg").getImage();
setIconImage(image);//改变图标


容器,根容器,部件看gui资料  E盘..

布局管理器
FlowLayout 面板(缺省管理器) 流布局管理器
在setLayout(null)下全是FlowLayout
BorderLayout JFrame(缺省布局管理器) 东 西 南 北 中
GridLayout 行列(像表格)
CardLayout 卡片布局管理器(没有页签)
GridBagLayout 格兰包布局管理器(标准管理器中最灵活的,不好把控)  


FlowLayout 从上到下,从左到右放置.
1.当第一行没有排满时,会把第一行排满再排下一行.
2.不管布局管理器是否改变,组件大小都不会改变.
FlowLayout folw = new FlowLayout (FlowLayout.LEFT);
3.在缺省状态下从中部开始.


BorderLayout
当东西南北任何一个地区没放置任何组件时,中部区域会把周围的区域侵略掉.
setLayout(new BorderLayout());
组件会随着容器大小的变化而变化.
add("North",组件); 不好用
add(组件,BorderLayout.NORTH); 清晰

GridLayout
组件会随着容器大小的变化而变化.
setLayout(new GridLayout(3,2));  行列
add(new Button("first",0));
根据序列依次填进去,只有列满了才去填行.
validate();  让容器刷新

GardLayout
GardLayout card = new GardLayout();
setLayout(card);
add("1",new Button(""));


CardLayout cl = (CardLayout)cardLayout.getLayout;
cl.show(cardLayout,"card1");

事件
class 类 extends JFrame implements(实现) ActionListener(接口)
{                      (受托事件处理)
                       不同的事件不同的部门处理
}
1 让类变成监听者
2 赋予多少职责就实现多少
3 建立部件与监听者的关系
jb.addActionListener(this);

 

CardLayout cl = (CardLayout)card.getLayout();
String s = e.getActionCommed();
if(s.equals("上一步"))
{
 cl.show(card,"card2");
        或者
        cl.previous(card);
 button.setEnabled(false);
}
else if(s.equals("下一步"))
{
 cl.show(card,"card1");
        或者
        cl.previous(card);
 button.setEnabled(false);
}

 

 

 

 

 

 

 

 

 

posted on 2007-01-11 21:11 阅读(292) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2007年1月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(1)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜