------- android培训、java培训、期待与您交流! ----------
1 Conponent组件
在包java.awt.*;
在包java.Swing.*;是awt包的升级包
Conponent组件
--|Container容器 跟按钮和标签虽然是平级的,可以添加按钮标签等
----|Windows窗口
------|Frame窗体
------|DialogFrame对话框窗体
-------------|FileFrame文件窗体
----|Panel面板
--|Button按钮
--|Label标签
--|checkbox复选框
--|TextComponent文本组件
------|TextArea
------|TextField
1.1)container容器中的排放方式,就是布局
1.1.1)常见的布局管理器:
FlowLayout(流式布局管理器)
从左到右的顺序排列,是 Panel面板默认的不加管理器
第一个添加进来的默认居中,第二个添加进来第一个往左移,第二个在右边对齐
1.1.2) BorederLayout(边界布局管理器),是Frame默认的布局管理器
默认是把整个窗口添充, 东南西北中
1.1.3) GridLayout(网格布局管理器)
规则的矩阵
1.1.4) GardLayout(卡片布局管理器)
选项卡
1.1.5) GridBagLayout(网格包布局管理器)
非规则的矩阵
3 创建图形化界面
1创建窗体Frame
2对窗体进行基本设置
比如大小,位置,布局
3定义组件
4将组件通过窗体的add方法添加到窗体中
5让窗体显示,通过setVisible(true)
/*
例子1:创建一个基本的Frame窗体
*/
import java.awt.*;
import java.awt.event.*;//监听器要导入import java.awt.event.*中的类
//因为WindowListener的子类WindowAdapter已经实现了WindowListener接口.并覆盖了其中的所有方法,那么我们只要继承Windowadapter覆盖我需要的方法即可
class MyWin extend WindowAdapter//定义一个监听器继承WindowAdapter
{
public void windowClosing(WindowEvent e)//复写关闭方法
{
System.out.println("我要关闭啦");
System.exit(0);
}
public void windowActivated(WindowEvent e)//复写活动窗口的方法
{
System.out.println("我活了");
}
public void windowOpened(WindowEvent e)//复写窗口打开方法
{
System.out.println("我被打开了啦");
}
}
class FrameDemo
{
public static void main(String[] args)
{
Frame f=new Frame("我是AWT");
f.setSize(500,100);
f.setLocation(300,200);
Button b=new Button("我是一个按钮");
f.add(b);
f.setLayout(new FlowLayout());
f.addWindowListener(new MyWin());//往窗体添加一个监听器
f.setVisible(true);
}
}
4 事件监听机制
例子:博物馆的密码锁监听器
1事件源:就是awt包或者Swing包中的那些图形界面组件
2事件:每一个事件源都有自己特有的对应事件和共性事件
3监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器
4事件处理
以上三者,在java中都已经定义好了,直接获取对象就可以了
我们要做的事情是,对产生的动作进行处理
import java.awt.*;
import java.awt.event.*;
/*
例子2:往按钮,添加一个监听器,鼠标监听器,文本框添加键盘监听器
同时把窗体和监听器代码分离
*/
class Frame
{
//定义图形中所需组件的引用
private Frame f;
private Button b;
private TextField tf;
Frame()
{
init(); //调用方法
}
public void init()
{
f=new Frame("我是一个窗口");
b=new Button("我是一个按钮");
tf=new TextField(20); //20是列数
f.setBounds(300,100,500,400);//对frame进行基本设置
f.add(tf);
f.add(b);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
//向文本框添加一个监听器
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
int code=e.getKeyCode();
if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
{
System.out.println(code+"...是非法的");
e.consume();//这个方法是符合条件的话不在文本框上输入,不能在文本框显示
}
}
});
//给按钮添加一个活动监听器,用匿名内部类实现
b.addActionListener(new ActionListener()//没有适配器,因为只有一个方法,自己覆盖就行了
{
public void actionPerformed(ActionEvent e)
{
System.out.println("按钮干的");
System.exit(0);
}
}
);
//给按钮添加一个鼠标监听器
b.addMouseListener(new MouseAdapter()
{
private int count=1;
private int clickCount=1;
public void mouseEntered(MouseEvent e)
{
System.out.println("鼠标进入按钮组件"+count++);
}
//向按钮添加一个鼠标监听器,因为鼠标是共性事物,所以他的监听器定义在Comonpent组件中,只要是他的都可以调用这个方法
public void mouseClicked(MouseEvent e)
//e是一个事件对象,是事件源被外力触发后,把触发的事件打包成对象,返 回给监听器,由监听器根据事件来做出处理方式
{
if(e.getClickCount()==2)//获取鼠标点击次数
System.out.println("点击动作"+clickCount++);
}
});
//按钮添加一个键盘监听器,按钮是当前窗口的事件源(如果是活动),我一按键盘,那么安装在按钮上的监听器就被触发了,触发之后,按钮就把触发的事件封装成对象KeyEvent,返回给监听器,由监听器做出处理
b.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
//getKeyChar获取键盘字母,getKeyCode获取字母对应的字节码
//KeyEvent.getKeyText(e.getKeyCode());//获取键盘上对应键的文本
输出的例子:esc是27
//if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)表示如果control键和enter同时按下
if(e.getKeyCode()==KeyEvent.VK_ENTER)//键盘码如果是ENTER就退出窗口
System.exit(0);
System.out.println(e.getKeyChar()+"..."+e.getKeyCode());
}
}
);
}
}
class FrameDemo2
{
public static void main(String[] args)
{
new Frame();
}
在文本框上输入目录,点击按钮转到,在文本区域上显示,目录下的文件
/*
例子3:在文本框上输入目录,点击按钮转到,在文本区域上显示,目录下的文件
*/
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class FrameButton
{
private Frame f;
private Button but;
private TextField tf;
private TextArea ta;
FrameButton()
{
init();
}
private void init()
{
f=new Frame("我是一个窗口");
f.setBounds(300,200,500,400);
f.setLayout(new FlowLayout());
tf=new TextField(60);
but=new Button("转到");
ta=new TextArea(30,80);
f.add(tf);
f.add(but);
f.add(ta);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
//添加一个按钮的活动监听器
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String s=tf.getText();//得到文本框里的东西
File file=new File(s);
if(file.exists()&&file.isDirectory())
{
ta.setText("");//判断完之后把文本区域情况
String[] names=file.list();
for(String name:names)
{
//注意ta.setText(String)会把原来文本区域里的东西覆盖掉的
//把循环到的字符串文件名,添加到文本区域,
ta.append(name+"\r\n");
}
}
}
});
}
}
class FrameText
{
public static void main(String[] args)
{
new FrameButton();
}
}