Frame :
Frame : 创建一个框
1 Frame f = new Frame("这是框的标题");//创建一个框 标题是这是框的标题
//默认调用paint(Graphics g)方法 需要覆写
2 或者写个类 继承这个Frame类 也行 如 ;
public class GUI extends Frame{
public static void main(String[] args){
GUI a = new GUI();//也是创建一个框
//因为实例化的时候调用GUI的无参构造而无参构造里面默认第一行有个super(),调用父类的无参构造,就会创建一个Frame框
}
}
setLocation :
setLocation() : //设置框的位置 以屏幕左上角(也就是屏幕原点)为标准
f.setLocation(100,100);//设置框的位置 以屏幕左上角为标准 (x,y)
setSize :
setSize() : //设置框的大小
f.setSize(200,200);//宽和高 (w,h)
setBackground :
setBackground() : //设置框的背景颜色
1 f.setBackground(Color.blue);//设置框的背景颜色为蓝色
2 f.setBackground(new Color(0,0,102));//RGB:Red,Green,Blue->三原色
setResizable :
setResizable() : //设置框的大小是否可以被改变 就是是否可以拉长什么的
f.setResizable(false);//boolean型 true/false
setVisible :
setVisible() : //设置框是否可见
f.setVisible(true);//不写默认是false,一般都要设置 要么你创建框干嘛
setBounds :
setBounds() : //同时设置位置和宽高 x,y,w,h
f.setBounds(444,444,222,222);//同时设置位置和宽高
Panel :
Panel默认布局管理器是 FlowLayout 浮动布局
1 Panel p = new Panel();//创建小控件
2 Panel p = new Panel(null);//小控件里面可以直接设置布局
3 Panel p = new Panel(new FlowLayout(FlowLayout.LEFT/RIGHT/CENTER));
// LEFT 左 向左浮动
// RIGHT 右 向右浮动
// CENTER 中 中间浮动
p.setBounds(50,50,100,100);//设置小部件的x,y,w,h 注意 !这个设置位置 是以框的左上角(原点),为标准 就是f
p.setBackground(new Color(200,200,255));//设置小控件的背景颜色
f.add(p);//就把小空间添加到Frame框中了
setLayout :
setLayout() : //设置布局管理器
有三种布局管理器 :
1 FlowLayout(); //Panel默认的
2 BorderLayout(); //Frame默认的
3 GridLayout(); //都能用的
FlowLayout :
1 Panel默认的布局管理器 但是指定了也可以用BorderLayout
Panel p = new Panel(new FlowLayout(FlowLayout.LEFT/RIGHT/CENTER));
Panel p = new Panl(new BorderLayout(BorderLayout.EAST/WEST/NORTH/SOUTH/CENTER));
// LEFT 左 向左浮动
// RIGHT 右 向右浮动
// CENTER 中 中间浮动
BorderLayout :
2 Frame默认的布局管理器 但是指定了也可以用FlowLayout
1 Frame f = new Frame(BorderLayout.EAST/WEST/NORTH/SOUTH/CENTER);
2 FlowLayout fl = new FlowLayout(FlowLayout.CENTER,20,40);//设置布局方式,水平间距,垂直间距
f.setLayout(fl);
// 东西向南北缩放
// 南北向东西缩放
// 中向四周缩放
// EAST 东
// WEST 西
// NORTH 北
// SOUTH 南
// CENTER 中
GridLayout :
3 Frame和Panel都有的布局管理器
GridLayout();//网格布局管理器
f.setLayout(new GridLayout(2,2));//两行两列Frame的
p.set(new GridLayout(2,2));//Panel的
Button :
Button b1 = new Button("按钮");//创建按钮 后面括号是按钮的名字
把按钮添加到Frame中,并通过常量(public static final XXX(必须大写))指定他们的位置 有两种 :
1 f.add(b1, BorderLayout.EAST/WEST/NORTH/SOUTH/CENTER);//东(右),西(左),北(上),南(下),中
2 f.add(b1,"East/West/North/South/Center");//东(右),西(左),北(上),南(下),中
pack :
pack() : //是否打包,把frame里面所有的元素打包,然后根据包裹的大小,把frame撑开,f.setSize(),就失效了
f.pack();//frame框用里面的元素撑开
ActionListener :
//创建监听器 :
1 监听器类必须实现ActionListener接口
2 必须实现ActionListener接口中的actionPerformed(ActionEvent e)方法
addActionListener :
//绑定监听器 :
addActionListener();//给指定的按钮什么的绑定监听器 触发监听器 会默认调用actionPerformed(ActionEvent e)这个方法
b.addActionListener(m);//给b按钮绑定监听器 m在后面例子中,
setActionCommand :
setActionCommand() : //给监听器绑定说明
b.setActionCommand("我是第一个按钮");
如 : //简单的属性设置 好多属性没设置
class Monitor implements ActionListener{//自己创建一个监听器类 实现ActionListener接口
//实现ActionListener接口中的actionPerformed(ActionEvent e)方法
public void actionPerformed(ActionEvent e){
System.out.println( "我这个button按了一下" );
System.out.println( e.getActionCommand() );//获取给监听器添加的说明
}
}
public class GUI{
public static void main(String[] args){
Frame f = new Frame("名字");//创建框
Button b = new Button("按钮");//创建按钮
Monitor m = new Monitor();//实例化监听器类
b.addActionListener(m);//绑定监听器 并把对象传进去
f.add(b);//把按钮添加到框中
f.setVisible(true);//框可见
}
}
TextField :
TextField() : 绑定的监听器,由回车触发
TextField t = new TextField();//创建一个文本框
TextField t = new TextField(10);//创建一个文本框并且最多只能输入10个
f.add(t);//把文本框添加到Frame框中
t.addActionListener(new TFActionListener());//绑定监听器 由回车触发
t.setEchoChar(‘*‘);//密码机制 把输入的文字用*遮蔽
f.pack();//包裹 有内容撑起Frame框
setVisible(true);//设置可见
class TFActionListener implements ActionListener{//创建监听器
//接收事件对象,////一个类去访问另外一个类里面的的方法里面的局部变量,不可能
public void actionPerformed(ActionEvent e){
//获得事件对象的源对象:在一个类里面想访问另一个类里面的事件源对象,getSource()
TextField tf = (TextField)e.getSource();
//把事件源传递过来,然后向下转型
//强制类型转换成TextField对象然后toString()输出
System.out.println( tf.getText() );//输出文本框的内容
//然后把内容设为空
tf.setText("");
}
}
getSource :
getSource() : 获得事件源的对象
TextField tf = (TextField)e.getSource();//如上面的代码,获得事件源的对象,然后向下转型,就能访问特有的属性
getText :
t.getText();//获得文本框的内容
setText :
t.setText("");//给文本框重新赋值 就一个"" 就是设置为空
setEchoChar :
t.setEchoChar(‘*‘);//把文本框输入的字用*号代替(只是遮蔽,输出是什么,还是什么,*只是不让直接看到)
Label :
Label l = new Label("注意:");//创建一个标注
f.add(l);//添加到Frame框中
paint :
paint(Graphics g);//创建Frame框的时候,会默认调用这个方法
//Graphics:就看做是画笔,把Frame看做是画布
getColor :
Color c = g.setColor();//获得画笔原来的颜色
setColor :
g.setColor(Color.red);//设置画笔的颜色
g.setColor(c);//就是洗画笔,把画笔改为原来的颜色
fillOval :
g.fillOval(50,55,55,55);//画一个实心椭圆(内切椭圆),位置,宽高
fillRect :
g.fillRect(44,44,44,44);//画一个实心的矩形,位置,宽高
drawOval :
g.drawOval(22,22,22,22);//画一个空心椭圆(内切椭圆),位置,宽高
drawRect :
g.drawRect(22,22,22,22);//画一个空心矩形,位置,宽高
MouseAdapter :
f.addMouseListener(new 监听类);//绑定鼠标监听 触发监听,默认调用mousePressed(MouseEvent e)这个方法
绑定鼠标监听 :
1 创建监听器类 必须继承MouseAdapter这个抽象类
2 必须实现(其中一个方法,这里实现的是)mousePressed(MouseEvent e)这个方法
class Monitor extends MouseAdapter{
//MouseListener-->MouseAdapter-->Monitor():如果直接实现接口,需要全部实现接口的方法,但还是MouseAdapter对接口的所有方法都进行了空的实现,我们只写去覆写我们需要的方法即可
//MounseEvent,事件发生的时候,事件源会把时间的相关对象通过监听器发给我们的处理类
//监视器在对鼠标按下这个事件作出反应
public void mousePressed(MouseEvent e){
//拿到事件源对象,谁是事件源,Component,Frame就是事件源,本质是拿到时间源对象的引用
MyFrame f = (MyFrame)e.getSource();//拿到事件源的引用
f.addPoint(new Point(e.getX(), e.getY()));//Point是个类 getX(),getY()鼠标的坐标,以这个坐标为原点,花一个点,然后把点添加到Frame框架中
//再去重画这个Frame及其里面的一切元素
//画布重画机制:前画布需要状态改变才行,大小,显示与否,等等
//repaint-->update-->paint();强制刷新屏幕,整个重新绘制
//这里通过repaint调用paint()方法,遍历集合,把每个点都进行强制重画,点一次,就从内存中发送到屏幕中,数据强制刷新一次
f.repaint();
}
}
WindowAdapter :
//创建窗口监听器
f.addWindowListener(new 监听类);//给Frame框绑定窗口监听(就能关闭了)
创建窗口监听 :
1 创建监听类必须继承WindowAdapter这个抽象类
2 必须实现(其中一个方法,这里实现的是)WindowClosing(WindowEvent)方法
f.addWindowListener(new MyWinMonitor());//绑定窗口监听
class MyWinMonitor extends WindowAdapter{//创建窗口监听类
public void windowClosing(WindowEvent e){//覆写方法
setVisible(false);//
System.exit(0);//关闭jvm
}
//匿名内部类写法 :
this.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
setVisible(true);
System.exit(0);//关闭jvm
}
}
);
KeyAdapter :
//创建键盘监听 :
1 创建键盘监听类 必须继承KeyAdapter抽象类
2 必须实现keyPressed(KeyEvent e)方法
f.addKeyListener(new 监听类);//给frame框绑定键盘监听
class KeyMonitor extends KeyAdapter{
public void keyPressed(KeyEvent e){
int keyCode = e.getKeyCode();// getKeyCode
if (keyCode == KeyEvent.VK_UP) {//常量VK_UP这里我只设置了UP键吧,
System.out.println( "up--------" );
}
}
}
getKeyCode :
getKeyCode();//获得按键的对应的整型值
KeyEvent :
KeyEvent是个类.里面的常量VK_UP 都有对应的整型int值