黑马程序员_图形用户界面

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

GUI图形用户界面

GUI(图形用户界面):java.Awt(抽象窗口工具包)  javax.Swing

                  Javax.Swing基于Awt,在任何系统下显示效果一样,增强了可移植性

布局管理器

    FlowLayout(流式布局管理器)----à从左到右的顺序排列。这个是Panel默认的。

    BorderLayout(边界布局管理器)--à东南西北中。这个是Frame默认的

    GirLayout(网格布局管理器)----à选项卡(比较规则的)

    GirdBagLayout(网格布局管理器)---à非规则的矩阵

事件监听机制:

1.      事件源:awt或Swing包中的组件

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

3.      监听器:将可以出发某一个事件的动作都已经封装到了监听器中。

继承关系图:


 下面是模拟浏览器的一个例子

  代码如下:

  

public class GUITest {
    GUITest()
    {
       init();
    }
    private Frame frame;
    private TextField tf;
    private Button but;
    private TextArea ta;
    public void init()
    {
       frame=new Frame("我的浏览器");
       frame.setBounds(150, 200,350, 350);
       tf=new TextField(30);
       but=new Button("转到");
       ta=new TextArea(15,40);
       frame.setLayout(new FlowLayout());
       frame.add(tf);
       frame.add(but);//把转到按钮添加到主窗体中
       frame.add(ta);//把文本区域添加进去
       frame.setVisible(true);//让窗体可见
       MyEvent();
    }
    public void MyEvent()
    {
     //让窗体关闭的监听器
       frame.addWindowListener(new WindowAdapter() { //
           public void windowClosing(WindowEvent e)
           {
              System.exit(0);
           }
       });
    //把目录中的内容添加到文本区域中
       but.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
              // TODO Auto-generated method stub
              String text = tf.getText();
              ta.setText(text);
              tf.setText(" ");
           }
       });
    }
    public static void main(String[] args) {
      
        new GUITest();
    }
 
}

运行结果:


下面例子是一个实现可以进行打开、保存、结束的一个窗口

代码如下:

public class GUITest2 {
    GUITest2()
    {
       init();
    }
    private Frame f;
    private MenuBar mb;
    private Menu m;
    private MenuItem mi, openmi,savemi,overmi;
    private FileDialog openfd,savefd;
    private TextArea ta;
    private File file;
    public void  init()
    {
       f=new Frame("我的窗口");
       f.setBounds(150, 200, 500, 400);
       ta =new TextArea();
       ta.setVisible(true);
      
       mb=new MenuBar();
       m=new Menu("文件");
       mi=new MenuItem("子菜单");
      
       openmi=new MenuItem("打开");
       savemi=new MenuItem("保存");
       overmi=new MenuItem("结束");
       openfd=new FileDialog(f, "打开",FileDialog.LOAD);
       savefd=new FileDialog(f, "保存",FileDialog.SAVE);
       f.setVisible(true);
       f.setMenuBar(mb);
       f.add(ta);
       mb.add(m);
       m.add(mi);
       m.add(openmi);
       m.add(savemi);
       m.add(overmi);
       MyEvent();
      
    }
    private void MyEvent()
    {
       savemi.addActionListener(new ActionListener() {//保存监听机制
          
           @Override
           public void actionPerformed(ActionEvent e) {
              // TODO Auto-generatedmethod stub
              if(file==null)
              {
              savefd.setVisible(true);
              String dir=savefd.getDirectory();
              String name=savefd.getFile();
              if(dir==null||name==null)
                  return;
               file=new File(dir,name);
              }
              try {
                  BufferedWriter bufw=new BufferedWriter(new FileWriter(file));
                  String text=ta.getText();
                 
                  bufw.write(text);
                  bufw.close();
                 
              } catch (IOException e1) {
                  // TODO Auto-generatedcatch block
                  e1.printStackTrace();
              }
           }
       });
       openmi.addActionListener(new ActionListener() {//打开监听机制
          
           @Override
           public void actionPerformed(ActionEvent e) {
              // TODO Auto-generatedmethod stub
              openfd.setVisible(true);
              String dir=openfd.getDirectory();
              String name=openfd.getFile();
              if(dir==null||name==null)
                  return;
              ta.setText(" ");
               file=new File(dir, name); 
               try {
                  BufferedReader bufr=new BufferedReader(new FileReader(file));
                  String line=null;
                  while((line=bufr.readLine())!=null)
                  {
                     ta.append(line+"\r\n");
                  }
                  bufr.close();   
              } catch (FileNotFoundException e1) {
                  // TODO Auto-generatedcatch block
                  e1.printStackTrace();
              } catch (IOException e3) {
                  // TODO Auto-generatedcatch block
                  e3.printStackTrace();
              }         
           }
       });
       f.addWindowListener(new WindowAdapter() { //关闭窗口事件监听
           public void windowClosing(WindowEvent e)
           {
              System.exit(0);
           }
       });
       overmi.addActionListener(new ActionListener() {//关闭窗口事件监听
          
           @Override
           public void actionPerformed(ActionEvent e) {
              System.exit(0);     
           }
       });
    }
    public static void main(String[] args) {
 
       new GUITest2();
    }
}
运行结果为


总结:保存的主要思路是:运用IO流读取文本并把文本写到文件中,判断一个原来的那个文件存在不存在,如果存在就直接保存,如果不存在就弹出保存窗口,在保存。打开实际上就是读文本然后再把文本写到文本区域中。


------- android培训java培训、期待与您交流! ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值