黑马程序员_javaGUI

来源:互联网 发布:魔兽世界台服mac下载 编辑:程序博客网 时间:2024/04/30 08:55

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

 

GUI:图形用户界面

JavaGUI提供的对象都存在java.Awtjava.Swing两个包中。

java.Awt:重量级控件

java.Swing:轻量级控件,在Awt的基础上。

Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其   他组件进来。

GUI布局

容器中组件的排放方式就是布局。

常见的布局管理器有:

FlowLayout流式布局管理器,从左到右的顺序排序,Panel默认的管理器。

BorderLayout边界布局管理器,东、南、西、北、中,Frame默认的管理器

GridLayout网格布局管理器,规则的矩阵

CardLayout卡片布局管理器,选项卡

GridBagLayout网格包布局管理器,非规则的矩阵

创建图形化界面

1,创建frame窗体。

2,对窗体进行基本设置。

       比如大小,位置,布局。

3,定义组件。

4,将组件通过窗体的add方法添加到窗体中。

5,让窗体显示,通过setVisible(true)

import java.awt.Button;

import java.awt.FlowLayout;

import java.awt.Frame;

 

classAwtDemo

{

       public static voidmain(String[] args)

       {

              Frame f=newFrame("我的窗体");//创建Fram窗体

              f.setSize(500,300);//设置迷你小窗口的横纵坐标,500是横坐标,300是纵坐标

              f.setLocation(400,300);//设置本地位置

              f.setLayout(newFlowLayout());//设置布局管理

              Button b=newButton("我是一个按钮");//创建按钮控件

              f.add(b);//将按钮添加到Fram窗体中

              f.setVisible(true);//设置窗体为显示

       }

}

事件监听机制

 

事件监听机制的特点:

事件源:就是awt包或者swing包中的那些图形界面组件。

   

事件:每一个事件源都有自己特有的对应事件和共性事件。

监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。

事件处理:

前三项,在java中都已经定义好了。

直接获取其对象来用就可以了。

我们要做的事情是,就是对产生的动作进行处理。

窗体事件

 

f.addWindowListener(new WindowAdapter()//添加窗体事件

              {

              public voidwindowClosing(WindowEvent e)//实现windowClosing关闭方法

                     {

                            System.exit(0);//退出

                     }

              });

因为WindowListener的子类WindowAdapter已经实现了WindowListener接口。

并覆盖了其中的所有方法。那么我只要继承自Windowadapter覆盖我需要的方法即可。

void windowActivated(WindowEvent e)激活窗体

void windowOpened(WindowEvent e)打开窗体

 

Action事件

Button b=new Button("my Button");   

              b.addActionListener(newActionListener()

              {

                     public voidactionPerformed(ActionEvent e)

                     {

                            System.out.println("退出,按钮干的");

                            System.exit(0);

                     }

              });

ActionListener 没有适配器的接口

鼠标事件

 

Button b=new Button("My Button");

              b.addMouseListener(newMouseAdapter()//添加指定的鼠标监听器

              {

                     private intcount=1;

                     private intclickcount=1;

                     public voidmouseEntered(MouseEvent e)//进入

                     {

                            System.out.println("鼠标进入到该组件"+count++);

                     }

                     public voidmouseClicked(MouseEvent e)//单机

           {

                            if(e.getClickCount()==2)//获取单机次数

                                   System.out.println("双机动作"+clickcount++);

                     }

              });

键盘事件

 

TextField tf=new TextField(10);//文本框

              Button b=newButton("My Button");

              tf.addKeyListener(newKeyAdapter()//添加指定的键盘监听器

              {

                     public voidkeyPressed(KeyEvent e)//键盘按下

                     {

                            if(!(e.getKeyCode()/*获取键对应的码*/>=KeyEvent.VK_0&&e.getKeyCode()<=KeyEvent.VK_9))

                                   System.out.println(e.getKeyCode()+"...是非法的");

                                   e.consume();

                     }

              });

              b.addKeyListener(newKeyAdapter()

              {

                     public voidkeyPressed(KeyEvent e)

                     {

                            if(e.isControlDown()/*判断ctrl键按下*/&&e.getKeyCode()==KeyEvent.VK_ENTER)

                                   System.out.println("ctrl+enteris run");

                     }

              });

列出指定目录内容(含有错误对话框提示)

import java.awt.*;

import java.awt.event.*;

import java.io.*;

class MyWindowDemo

{

       private Frame f;

       private TextField tf;

       private Button b;

       private TextArea ta;//文本区域,既能指定行,又能指定列

(对话框)

       private Dialog d;

       private Label l;//文字

       private Button b1;

       MyWindowDemo()

       {

              init();

       }

       public void init()

       {

              f=new Frame("MyWindow");

              f.setBounds(200,200,500,600);

              f.setLayout(newFlowLayout());

              tf=new TextField(50);

              b=new Button("转到");

              ta=newTextArea(40,55);

              f.add(tf);

              f.add(b);

              f.add(ta);

      

              d=new Dialog(f,"错误信息提示",true);

              d.setBounds(200,300,200,150);

              d.setLayout(newFlowLayout());

              l=new Label();

              b1=new Button("确定");

              d.add(l);

              d.add(b1);

              MyEvent();

              f.setVisible(true);

       }

       private void MyEvent()

       {

              b1.addActionListener(newActionListener()

              {

                     public voidactionPerformed(ActionEvent e)

                     {

                            d.setVisible(false);

                     }

              });

              d.addWindowListener(newWindowAdapter()

              {

                     public voidwindowClosing(WindowEvent e)

                     {

                            d.setVisible(false);

                     }

              });

              tf.addKeyListener(newKeyAdapter()

              {

                     public voidkeyPressed(KeyEvent e)

                     {

                            if(e.getKeyCode()==KeyEvent.VK_ENTER)

                                   showDir();

                     }

              });

              b.addActionListener(newActionListener()

              {

                     public voidactionPerformed(ActionEvent e)

                     {

                            showDir();

                     }

              });

              f.addWindowListener(newWindowAdapter()

              {

                     public voidwindowClosing(WindowEvent e)

                     {

                            System.exit(0);

                     }

              });

       }

       private void showDir()

       {

                            Stringdirpath=tf.getText();

                            Filedir=new File(dirpath);

                            if(dir.exists()&&dir.isDirectory())

                            {

                                   String[]names=dir.list();

                                   for(Stringname:names)

                                   {

                                          ta.append(name+"\r\n");//追加文本

                                   }

                            }

                            else

                            {

                            Stringinfo="您输入的信息:"+dirpath+"是错误的,请重输";

                                   l.setText(info);

                                   d.setVisible(true);

                            }

       }

       public static voidmain(String[] args)

       {

              new MyWindowDemo();

       }

}

菜单

import java.awt.*;

import java.awt.event.*;

class MyMenuDemo

{

       private Frame f;

       private MenuBar mb;

       private Menu m,subMenu;

       private MenuItemcloseItem,subItem;

       MyMenuDemo()

       {

              init();

       }

       public void init()

       {

              f=new Frame("MyWindow");

              f.setBounds(300,200,400,500);

              f.setLayout(new FlowLayout());

              mb=new MenuBar();

              m=new Menu("文件");

              subMenu=newMenu("子菜单");

              subItem=newMenuItem("子条目");

              closeItem=newMenuItem("退出");

              m.add(subMenu);

              subMenu.add(subItem);

              f.setMenuBar(mb);//在框架中添加菜单栏

              mb.add(m);

              m.add(closeItem);

              MyEvent();

              f.setVisible(true);

       }

       public void MyEvent()

       {

              f.addWindowListener(newWindowAdapter()

              {

                     public voidwindowClosing(WindowEvent e)

                     {

                            System.exit(0);

                     }

              });

              closeItem.addActionListener(newActionListener()

              {

                     public voidactionPerformed(ActionEvent e)

                     {

                            System.exit(0);

                     }

              });

       }

       public static voidmain(String[] args)

       {

              new MyMenuDemo();

       }

}

打开与保存文件的小练习

package myMenu;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

public class MyMenuTest

{

       private Frame f;

       private MenuBar bar;

       private TextArea ta;

       private Menu fileMenu;

       private FileDialogopenDia,saveDia;

       private MenuItemopenItem,saveItem,closeItem;

       private File file;

       MyMenuTest()

       {

              init();

       }

       public void init()

       {

              f=new Frame("MyWindow");

              f.setBounds(200,100,600,500);

              //f.setLayout(newFlowLayout());

              bar=new MenuBar();

              fileMenu=newMenu("文件");

              openItem=newMenuItem("打开");

              saveItem=newMenuItem("保存");

              closeItem=newMenuItem("关闭");

              f.setMenuBar(bar);

              bar.add(fileMenu);

              fileMenu.add(openItem);

              fileMenu.add(saveItem);

              fileMenu.add(closeItem);

              openDia=newFileDialog(f,"我要打开",FileDialog.LOAD);

              saveDia=newFileDialog(f,"我要保存",FileDialog.SAVE);

              ta=new TextArea();

              f.add(ta);

              MyEvent();

              f.setVisible(true);

       }

       public void MyEvent()

       {

              f.addWindowListener(newWindowAdapter()

              {

                     public voidwindowClosing(WindowEvent e)

                     {

                            System.exit(0);

                     }

              });

              closeItem.addActionListener(newActionListener()

              {

                     public voidactionPerformed(ActionEvent e)

                     {

                            System.exit(0);

                     }

              });

              openItem.addActionListener(newActionListener()

              {

                     public voidactionPerformed(ActionEvent e)

                     {

                            openDia.setVisible(true);

                            StringdirPath=openDia.getDirectory();

                            StringfileName=openDia.getFile();

                            System.out.println(dirPath+"..."+fileName);

                            if(dirPath==null||fileName==null)

                                   return;

                            file=newFile(dirPath,fileName);

                            try

                            {

                     BufferedReaderbr=new BufferedReader(new FileReader(file));

                                   Stringline=null;

                                   while((line=br.readLine())!=null)

                                   {

                                          ta.append(line+"\r\n");

                                   }

                                   br.close();

                            }

                            catch(IOException ex)

                            {

                                   thrownew RuntimeException("读取失败");

                            }

                     }

              });

              saveItem.addActionListener(newActionListener()

              {

                     public voidactionPerformed(ActionEvent e)

                     {

                            if(file==null)

                            {

                                   saveDia.setVisible(true);

                                   StringdirPath=saveDia.getDirectory();

                                   StringfileName=saveDia.getFile();

                                   System.out.println(dirPath+"..."+fileName);

                                   if(dirPath==null||fileName==null)

                                          return;

                                   file=newFile(dirPath,fileName);

                            }

                            try

                            {

                     BufferedWriterbw=new BufferedWriter(new FileWriter(file));

                                   Stringtext=ta.getText();

                                   bw.write(text);

                                   bw.flush();

                                   bw.close();

                            }

                            catch(IOException ex)

                            {

                                   throw new RuntimeException("写入失败");

                            }

                     }

              });

       }

       public static voidmain(String[] args)

       {

              new MyMenuTest();

       }

}

 

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

 

0 0
原创粉丝点击