GUI界面编程总结

来源:互联网 发布:apache shiro简单集群 编辑:程序博客网 时间:2024/06/11 11:55



GUIGraphical User Interface)图形化界面编程总结

Java.Awt:Abstract Window ToolKit(抽象窗口工具包)

Javax.Swing:

图形化界面基本设置:

设置窗体大小:setSize(长,宽);

设置窗体位置:setLocation(距离左,距离上);setBounds(长,宽,距离左,距离上);

设置布局:setLayout(new FlowLayout());

使窗体可见:setVisible(true);

事件监听机制:

事件监听机制的特点:

1,事件源。

2,事件。

3,监听器。

4,事件处理。

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

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

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

以上三者,在java中都已经定义好了。

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

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

 

Eg:编写程序,练习图形化界面编程!

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(300,100,600,500);

       f.setLayout(new FlowLayout());

       tf = new TextField(60);

       but = new Button("转到");

       ta = new TextArea(25,70);

       d = new Dialog(f,"提示信息-self",true);

       d.setBounds(400,200,240,150);

       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);

    }

    private void  myEvent()

    {

 

       okBut.addActionListener(new ActionListener()

       {

           public void actionPerformed(ActionEvent e)

           {

              d.setVisible(false);

           }

       });

       d.addWindowListener(new WindowAdapter()

       {

           public void windowClosing(WindowEvent 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();

    }

}

 

菜单:

MenuBar 菜单整体;Menu 包含于MenuBar中;MenuItem包含于Menu中!

以上3个关系添加用add();

将MenuBar放进Frame中用setMenuBar();

 

FileDialog.LOAD:打开的mode

FileDialog.Save:保存的mode

练习:一个简易的记事本

/**

 写一个关于记事本的小程序

 @author田建

 @version v1.1

 */

 

import java.awt.*;

import java.awt.event.*;

import java.io.*;

class MyMenuDemo

{

    private Frame f;

    private TextArea ta;

    private MenuBar mb;

    private Menu me;

    private MenuItem miNew,miSave,miLoad;

    private File file;

   

    private FileDialog openDia,saveDia;

   

    MyMenuDemo()

    {

       init();

    }

   

   

    public void init()

    {

       f=new Frame("田建--记事本");

       f.setBounds(300,100,650,600);

       ta=new TextArea();

       //ta.setBounds(302,105,400,300);

        //f.setLayout(new FlowLayout());//为什么设置成了流式布局之后再设置文本区域没有效果

      

       mb=new MenuBar();

       me=new Menu("文件(F)");

       miNew=new MenuItem("新建");

       miSave=new MenuItem("保存(S)");

       miLoad=new MenuItem("打开(O)");

      

       mb.add(me);

       me.add(miNew);

      

       me.add(miLoad);

       me.add(miSave);

       f.setMenuBar(mb);

       f.add(ta);

      

       openDia=new FileDialog(f,"打开文件",FileDialog.LOAD);

       saveDia=new FileDialog(f,"保存文件",FileDialog.SAVE);  

   

       myEvent();

       f.setVisible(true);

   

    }

   

    public void myEvent()

    {

       f.addWindowListener(new WindowAdapter()

       {

           public void windowClosing(WindowEvent e)

           {

              System.exit(0);

           }

       });

       miLoad.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("读取失败");

              }

           }

       });

       miSave.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("");

           }

       }

    });

      

    }

   

    public static void main(String[] args)

    {

       new MyMenuDemo();

    }

   

}

打jar包的过程:

1、编译包 jar –cvf jar名 包名

2、写一个文件main-class: 包名.类名【加个回车】

3、jar –cvfm jar名 文件名 包名

 

配置jar执行的过程:

工具---文件夹选项---文件类型---新建---文件扩展名jar

然后确定----高级----修改图标-----open------javaw的路径—jar即可!