黑马程序员——图形界面

------- android培训java培训、期待与您交流! ----------


图形界面:
java.awt,javax.swing包


Java将图形界面,包中的类,完成图形化界面的开发


awt包中,类有什么特点:必须依赖操作系统,重量级组件


swing包中,类,基于awt的功能,有Java代码完全实现的图形界面,不依赖操作系统,轻量级组件


如果我们用awt做图形界面,Windows下的效果,就和Windows窗体效果是一致的,放到Linux中,界面的效果,就和Linux界面效果一致


如果我们用swing做图形界面,Windows下的效果,和Linux下的效果是一致的。


Frame类,制作窗体


? 空参数的
带有一个String标题的


让窗体显示的方法 setVisible(boolean )


改变窗体大小的方法,设置尺寸 setSize(int width,int height)


对窗体进行定位 setLocation(int x,int y)


设置尺寸和位置 setBounds(int x ,int y, int width,int height)可以去掉setSize,setLocation


设置窗体的背景色 setBackground(Color c)


java中,万物皆对象,颜色也是对象,封装到了Color类


  获取屏幕分辨率的方式 ToolKit实现,静态方法 getDeafultToolKit,返回子类的对象


  调用Toolkit类的方法getScreenSize获取屏幕分辨率,返回Dimension对象,这个对象的成员变量 width height获取最终的分辨率
代码:


import java.awt.*;
public class FrameDemo {
public static void main(String[] args) {
int w = Toolkit.getDefaultToolkit().getScreenSize().width;
int h = Toolkit.getDefaultToolkit().getScreenSize().height;

//创建Frame类的对象,空参数的构造方法
Frame f = new Frame("这是我的第一个窗体");
//设置尺寸,调用父类方法setSize
f.setSize(600, 300);
//对窗体位置设定,调用父类方法setLocation
f.setLocation((w-600)/2, (h-300)/2);
//调用父类方法setVisible 传递true显示窗体

//设置背景色,调用父类方法setBackground传递Color类型
//Web颜色 #FFFFFFF
f.setBackground(new Color(202,232,206));
f.setVisible(true);
System.out.println("结束了");
//使用Toolkit获取屏幕分辨率


}
}
布局管理器

黑马程序员——图形界面_第1张图片
在窗体上,放置很多组件,文本框,按钮,排列,布局。


将按钮放在窗体上 


描述按钮对象的类 java.awt.Button


构造方法:带有一个String的标签


将按钮放在窗体上,使用的是窗体的方法 Frame类的add(按钮)


能不能让按钮,随意放置,大小自定义调节


设置窗体的布局管理器,取消布局管理器


调用窗体的方法 setLayout(null)


如果取消了布局管理器,组件,必须定义位置和尺寸,否则不显示。
/*
 * 窗体的布局管理
 * 按钮放在窗体上
 */
import java.awt.*;
public class FrameDemo1 {
public static void main(String[] args) {
int w = Toolkit.getDefaultToolkit().getScreenSize().width;
int h = Toolkit.getDefaultToolkit().getScreenSize().height;

//创建Frame类的对象,空参数的构造方法
Frame f = new Frame("布局管理");
//设置尺寸,调用父类方法setSize
f.setSize(600, 300);
//对窗体位置设定,调用父类方法setLocation
f.setLocation((w-600)/2, (h-300)/2);
f.setBackground(Color.gray);
//调用父类方法setVisible 传递true显示窗体
f.setVisible(true);
//取消窗体的布局管理器
f.setLayout(null);
//创建按钮对象
Button b = new Button("确定");
b.setBounds(100, 50, 50, 30);
f.add(b);
}
}




事件监听机制


写事件监听器,标准格式:事件源.addXXXListener(new XXXAdapter(){
    public void 方法名(XXXEvent e){
}
});


事件源:就是用户可以操作的组件,按钮,窗体,文本框


事件:鼠标事件,键盘事件,窗体事件


监听器:内置与事件源上的一种监听机制(窃听器),监听鼠标事件,只要有鼠标的动作,就会被监听器捕获


事件处理,一旦监听器监听到了动作,调用响应的函数,进行事件的处理


  有一个人,事件源,挨打事件,人的事件源中内部有一个监听机制,监听挨打,监听器捕获到了挨打的事件,打的部位和打的程度,调用不同的处理方法
package cn.itcast.gui;
/*
 * 事件监听机制
 * 将窗体关闭
 * 事件源是窗体
 * 事件窗体事件
 * 监听器,监听窗体事件
 * 监听器调用关闭的方法,处理事件
 */
import java.awt.*;
import java.awt.event.*;
public class FrameDemo2 {
public static void main(String[] args) {
Frame f = new Frame("关闭窗体的功能");
f.setBounds(200, 100, 500, 400);
f.setVisible(true);
//事件远上添加一个事件的监听器,监听窗体事件,父类方法添加窗体监听器
//传递一个WindowListener接口的实现类对象
//f.addWindowListener(new MyListener());
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.out.println(e);
System.exit(0);
}
});
}
}
//实现代码的简化,不能为了一个方法,重写7个方法
//接口,必须有实现类,必须全部重写方法
//AbstractMyListener适配器类 Adapter
abstract class AbstractMyListener implements WindowListener{
public void windowActivated(WindowEvent e){

    }
    public void windowClosed(WindowEvent e) {
   
    }
    public void windowClosing(WindowEvent e) {
   
    }
    public void windowDeactivated(WindowEvent e) {
   
    }
    public void windowDeiconified(WindowEvent e) {
   
    }
    public void windowIconified(WindowEvent e) {
    
    }
    public void windowOpened(WindowEvent e) {
   
    }
}


/*
 * 鼠标事件
 */
import java.awt.*;
import java.awt.event.*;


public class FrameDemo3 {
public static void main(String[] args) {
Frame f = new Frame("鼠标事件");
f.setBounds(200, 100, 500, 400);
f.setLayout(null);


f.setVisible(true);
Button but = new Button("确定");
but.setBounds(100, 50, 50, 30);
f.add(but);
// 对事件源按钮,添加鼠标事件
but.addMouseListener(new MouseAdapter() {
// 重写鼠标的点击事件
public void mouseClicked(MouseEvent e) {
// System.out.println(e);
if (e.getClickCount() == 12)
System.out.println("点击了按钮");
}
//鼠标进入事件源
public void mouseEntered(MouseEvent e) {
System.out.println("鼠标进入");
}
//鼠标离开事件源
public void mouseExited(MouseEvent e) {
System.out.println("鼠标离开");
}


});


}
}
没有学不好,只有不努力~~——至自己!!!

你可能感兴趣的:(黑马程序员——图形界面)