java GUI(UI创建与监听机制)

/*
 * GUI(Graphical User Interface):图像用户接口。
 * CLI:命令用户接口。
 * java为GUI提供的对象都在java.Awt中和javaSwing两个包中。
 * java.Awt:(Abstract Window ToolKit)抽象窗口工具包,需要调用本地系统方法实现功能。属于重量控件。
 * javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由java实现,增强了移植性,属于轻量级控件。
 * 一.布局:容器中的组件的排放方式,就是布局。
 * 1.FlowLayout(流式布局管理)
 * 从左到右的顺序排列,Panel(面板)默认的布局管理器。
 * 2.BorderLayout(边界布局管理器)
 * 东南西北中,Frame默认的布局管理器。
 * 3.GridLayout(网格布局管理器)
 * 规则的矩阵。
 * 4.CardLayout(卡片布局管理器)
 * 选项卡。
 * 5.GridBagLayout(网格包布局管理器)
 * 非规则的矩阵。
 */
import java.awt.*;
public class GuiDemo {
public static void main(String[] args) {
AwtDemo();
System.out.println("gogoing");
}
//定义一个窗体,设置窗体名称,设置窗体可见。
public static void AwtDemo()
{
//设置窗体名称,
Frame f=new Frame("my awt");
//设置窗体可见
f.setVisible(true);
}

}


/*
 * 一.创建图形化界面:
 * 1.创建frame窗体。
 * 2.对窗体进行基本设置,如:大小,位置,布局。
 * 3.定义组件。
 * 4.将组建通过窗体的add方法添加到窗体中。
 * 5.让窗体显示,通过setViseble(true)。
 * 


 * 二.事件监听机制的特点:
 * 1.事件源:
 * awt包或者swing包中的那些图形界面组件。
 * 2.事件:
 * 每一个事件源都有自己特有的对应事件和共性事件。
 * 3.监听器:
 * 将可以出发某一个事件的动作(不只一个动作)都已经封装到了监听器中。
 *以上三者都在java中定义好了,直接获取对象。
 * 4.事件处理:
 * 程序员自己需要对产生的动作进行处理。
 * 
 */
import java.awt.*;
import java.awt.event.*;
public class AwtDemo {
public static void main(String[] args) {
FrameDemo();
}
public static void FrameDemo()
{
//创建frame窗体。
Frame f=new Frame();
//对窗体进行基本设置,如:大小,位置,布局。
f.setSize(500,500);
f.setTitle("lol客户端");
f.setLocation(300,300);
f.setLayout(new FlowLayout());

//定义组件,;并且添加属性。
Button b=new Button("我是一个按钮");
f.add(b);


//用窗体调用添加监听器的方法,方法里必须接收一个(监听器)windowListtener接口子类对象。
//而该接口里有七个方法,子类必须全部复写,而我们只需要调用我们需要的方法,所以此方法不行。
//该接口的抽象子类WindowAdapter复写了其全部的方法,而且不是抽象。
//所以我们定义该类的子类,并且复写我们需要的方法,即可。
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//e表示事件的所有信息,没有很大意义。
System.out.println("close windos"+e.toString());
System.exit(0);

}


});
//让窗体显示
f.setVisible(true);
}
}
/*定义WindowAdapter子类。
class MyWin extends WindowAdapter
{
//窗体关闭动作处理方式,只要监听器一监听到用户的关闭动作就会自动调用此方法进行处理。
public void windowClosing(WindowEvent e)
{
//System.out.println("close windos");
System.exit(0);
}
}*/

import java.awt.*;
import java.awt.event.*;
public class FrameDemo {
//先定义该图形中所需要的组件的引用。
private Frame f;
private Button but;
FrameDemo()
{
init();
}
//对图形化界面进行初始化。
public void init()
{
f=new Frame("my frame");
//对frame进行基本设置,该方法包含setsize和setlocation.
f.setBounds(200,200,400,300);
f.setLayout(new FlowLayout());
but=new Button("my button");
//将组建添加到frame中
f.add(but);
//显示窗体之前,加载一下窗体上的事件。
myEvent();
//显示窗体
f.setVisible(true);
}
private void myEvent()
{
//为窗体添加监听器
f.addWindowListener(new WindowAdapter() {
public void windowClosing (WindowEvent e)
{
System.exit(0);
}
});
//让按钮具备退出程序的功能。
/*
* 按钮就是时间源。
* 那么选择哪个监听器,需要查看该组件对象的功能。
* 通过查阅button的api,发现按钮支持一个特有的监听addActionListener
*/
//为按钮添加一个活动监听器,ActionListener监听器不需要适配器,因为它只有一个方法。
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("退出,按钮干的");
System.exit(0);
}
});


}
public static void main(String[] args) {
new FrameDemo();
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章