package guiDemo;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import com.sun.org.apache.xalan.internal.xsltc.compiler.sym;
public class FrameDemo {
public static void main(String[] args) {
Frame f = new Frame("我是一个窗口");
f.setSize(500, 400);//设置窗口的尺寸
f.setLocation(300, 50);//设置初始窗口的位置距离屏幕左上角 0,0
//f.setIconImage(Toolkit.getDefaultToolkit().createImage("图片路径"));//设置窗口的图标
//窗体默认是便捷布局 管理器 东南西北中方位填充
f.setLayout(new FlowLayout());//设置窗体为流布局管理器, 从左到右依次排放
Button b1 = new Button("按钮1");//创建一个按钮
Button b2 = new Button("按钮2");//创建一个按钮
Button b3 = new Button("按钮3");//创建一个按钮
Button b4 = new Button("按钮4");//创建一个按钮
Button b5 = new Button("按钮5");//创建一个按钮
f.add(b1);f.add(b2);f.add(b3);f.add(b4);f.add(b5);//添加按钮到布局管理器
//添加按钮到五个方位 边界布局管理器才行
/* f.add("Center", b1);
f.add("East", b2);
f.add("North", b3);
f.add("West", b4);
f.add("South", b5);*/
/**
* 鼠标监听 MouseListener MouseAdapter
*/
//给按钮加上鼠标监听
/*b1.addMouseListener(new MouseAdapter() {
//当点击按钮1鼠标释放时关闭窗口,
@Override
public void mouseReleased(MouseEvent e) {
System.exit(0);
}
});*/
/* b2.addMouseListener(new MouseAdapter() {
如果设置成点击关闭可能会出现bug,
@Override
public void mouseClicked(MouseEvent e) {
System.exit(0);
}
});*/
/**
* 键盘监听KeyListener KeyAdapter
*/
//给按钮加上键盘监听
b1.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
if(e.getKeyCode() == KeyEvent.VK_SPACE) {//按空格推出在按钮上添加
System.exit(0);
}
}
});
/**
* 动作监听 addActionListener 只有一个方法不需要加适配器
*/
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("我被添加了动作,点击我啊!快点击我");
}
});
//给窗体加上 监听
//f.addWindowListener(new MyWindowsListener());//自定义类实现windowsListener太浪费资源所以使用适配器模式
f.addWindowListener(new WindowAdapter() {//匿名对象重写 windowAdater 的方法实现点击关闭窗口
public void windowClosing(WindowEvent e) {
System.out.println("窗口已关闭");
System.exit(0);
}
});
f.setVisible(true);//初始窗口默认不可见,要使用此方法设置可见
}
}
class MyWindowsAdapter extends WindowAdapter{
/**
* 重写closing方法实现点击关闭窗体
*/
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
class MyWindowsListener implements WindowListener{
@Override
public void windowOpened(WindowEvent e) {
System.out.println("windowOpened");
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("Cloising");
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
System.out.println("Closed");
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
}