------- android培训、java培训、期待与您交流! ----------
GUI
Graphical User Interface(图形用户接口)。
用图形的方式,来显示计算机操作的界面,这样更方便更直观。
Java为GUI提供的对象都存在java.Awt抽象窗口工具包,需要调用本地系统方法实现功能。属重量级控件
javax.Swing基于Awt基础,建立一套图形界面系统,提供更多组件,完全由java实现。增强移植性,属轻量级控件
Container:为容器,是一个特殊组件,该组件中可以通过add方法添加其他组件进来
常见的布局管理器:
FlowLayout(流式布局管理器)
从左到右的顺序排列。
Panel默认的布局管理器。
BorderLayout(边界布局管理器)
东,南,西,北,中
Frame默认的布局管理器。
GridLayout(网格布局管理器)
规则的矩阵
CardLayout(卡片布局管理器)
选项卡
GridBagLayout(网格包布局管理器)
非规则的矩阵
- 简单的窗体创建过程:
- Frame f = new Frame(“my window”);
- f.setLayout(new FlowLayout()); //设置布局管理器
- f.setBounds(400,400,600,500);//设置窗体大小及出现位置
- //f.setSize(600,500); //设置窗体大小
- //f.setLocation(400,400); //设置窗体出现在屏幕的位置
- f.setIconImage(Toolkit.getDefaultToolkit().createImage("qq.png"));
- Button button = new Button("我是一个按钮");
- f.add(button);
- //显示窗体
- f.setVisible(true);
事件监听机制
1,确定事件源(容器或组件)
2,通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上。
该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象。一般用匿名内部类来表示。
3,在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收。
4,事件触发后会把事件打包成对象传递给该变量。(其中包括事件源对象。通过getSource()或者,getComponent()获取。)
窗口事件关闭窗体
- //事件源是窗体,把监听器注册到事件源上
- //事件对象传递给监听器
- f.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent e) {
- System.out.println("关闭");
- //退出虚拟机,关闭窗口
- System.exit(0);
- }
- });
按钮关闭窗体
- but.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- System.exit(0);
- }
- });
鼠标监听器(MouseListener)
void mouseClicked(MouseEvent e)
鼠标按键在组件上单击(按下并释放)时调用。
void mouseEntered(MouseEvent e)
鼠标进入到组件上时调用。
void mouseExited(MouseEvent e)
鼠标离开组件时调用。
void mousePressed(MouseEvent e)
鼠标按键在组件上按下时调用。
void mouseReleased(MouseEvent e)
鼠标按钮在组件上释放时调用。
- but.addMouseListener(new MouseAdapter(){
- private int count = 1;
- private int clickCount = 1;
- public void mouseEntered(MouseEvent e){
- System.out.println("鼠标进入"+count++);
- }
- public void mouseClicked(MouseEvent e){
- if(e.getClickCount()==2)
- System.out.println("双击进入"+clickCount++);
- }
- });
键盘按下事件
- but.addKeyListener(new KeyAdapter(){
- public void keyPressed(KeyEvent e){
- //Control和Control按下
- if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_Control)
- System.out.println("ctrl+enter is run");
- //根据码获取所按的键
- //System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
- }
- });
文本框键盘监听事件
- 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(KeyEvent.getKeyText(code)+"....非法");
- e.consume();//屏蔽
- }
- }
- });
- //列出指定目录内容
- //错误提示对话框
- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- class MyWindowDemo{
- private Frame f;
- private TextField tf;
- private Button but;
- private TextArea ta;
- private Dialog d;//对话框
- private Label lab;//文字
- private Button okBut;
- MyWindowDemo(){
- init();
- }
- public void init(){
- f = new Frame("my window");
- f.setBounds(400,200,600,400);
- f.setLayout(new FlowLayout());
- tf= new TextField(30);
- but = new Button("转到");
- ta = new TextArea(15,40);
- //不关闭无法操作其它
- d = new Dialog(f,"提示信息-self",true);
- d.setBounds(400,200,300,180);
- d.setLayout(new FlowLayout());
- lab = new Label();
- okBut = new Button("确定");
- d.add(lab);
- d.add(okBut);
- f.add(tf);
- f.add(but);
- f.add(ta);
- myEvent();
- f.setVisible(true);
- }
- public void myEvent(){
- d.addWindowListener(new WindowAdapter(){
- public void windowClosing(WindowEvent e){
- d.setVisible(false);
- }
- });
- okBut.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e)
- {
- d.setVisible(false);
- }
- });
- tf.addKeyListener(new KeyAdapter(){
- public void keyPressed(KeyEvent e)
- {
- //键盘事件-回车
- if (e.getKeyCode()==KeyEvent.VK_ENTER)
- showDir();
- }
- });
- but.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e)
- {
- showDir();
- }
- });
- f.addWindowListener(new WindowAdapter(){
- public void windowClosing(WindowEvent e)
- {
- System.exit(0);
- }
- });
- }
- private void showDir(){
- String dirPath = tf.getText();//指定的目录
- File dir = new File(dirPath);
- if(dir.exists() && dir.isDirectory()){//存在并且是目录
- ta.setText("");//清空
- String[] names = dir.list();
- for (String name : names ){
- ta.append(name+"\r\n");
- }
- }
- else{
- String info = "输入的信息:"+dirPath+"是错误的,请重新输入";
- lab.setText(info);
- d.setVisible(true);
- }
- }
- public static void main(String[] args) {
- new MyWindowDemo();
- }
- }
- //菜单应用:打开保存退出
- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- class MyMenuText{
- private Frame f;
- private MenuBar bar;//菜单栏
- private Menu fileMenu ;//子菜单
- private MenuItem closeItem,openItem,saveItem;//条目
- private FileDialog openDia,saveDia;
- private TextArea ta;
- private File file;
- MyMenuText(){
- init();
- }
- public void init(){
- f = new Frame("my window");
- f.setBounds(400,200,600,400);
- bar = new MenuBar();
- ta= new TextArea();
- fileMenu = new Menu("文件");
- closeItem = new MenuItem("退出");
- saveItem = new MenuItem("保存");
- openItem = new MenuItem("打开");
- fileMenu.add(openItem);
- fileMenu.add(saveItem);
- fileMenu.add(closeItem);
- bar.add(fileMenu);
- f.setMenuBar(bar);
- openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);//打开
- saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);//保存
- f.add(ta);
- myEvent();
- f.setVisible(true);
- }
- public void myEvent(){
- //保存条目事件
- saveItem.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- //文件不存在,保存文件
- if(file==null){
- saveDia.setVisible(true);
- String dirPath = saveDia.getDirectory();
- String fileName = saveDia.getFile();
- if(dirPath==null || fileName==null)
- return ;
- file = new File(dirPath,fileName);
- }
- //存在则修改
- try{
- BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
- //获取文本区的内容
- String text = ta.getText();
- bufw.write(text);
- bufw.close();
- }
- catch (IOException ex){
- throw new RuntimeException();
- }
- }
- });
- //打开条目事件
- openItem.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e){
- openDia.setVisible(true);
- //获得路径
- String dirPath = openDia.getDirectory();
- //获得文件名
- String fileName = openDia.getFile();
- if(dirPath==null || fileName==null)
- return ;
- //打开之前先清空
- ta.setText("");
- file = new File(dirPath,fileName);
- try{
- BufferedReader bufr = new BufferedReader(new FileReader(file));
- String line = null;
- while ((line=bufr.readLine())!=null){
- ta.append(line+"\r\n");
- }
- bufr.close();
- }
- catch (IOException ex){
- throw new RuntimeException("读取失败");
- }
- }
- });
- closeItem.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent e)
- {
- System.exit(0);
- }
- });
- f.addWindowListener(new WindowAdapter(){
- public void windowClosing(WindowEvent e){
- System.exit(0);
- }
- });
- }
- public static void main(String[] args) {
- new MyMenuText();
- }
- }