黑马程序员——GUI

                                          ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

      我们在前面的程序里使用的都是命令行的模式,为了便于客户的使用,提供了可视化图形用户界面。我们在编写这些可视化的窗口时候,使用的是AWT,AWT是从个个平台窗口系统里抽取的共性组件。但是,AWT提供的功能有限,窗口丑陋,后来者开发GUI库,简称IFC,总体上来看的话,Swing是AWT的改进。

    下图介绍了AWT里包含的两个子类及其继承关系,Component代表了一个能以图形化式显示出来,并可以与用户可以很好交互的对象。MenuComponent则代表图形界面的菜单组件, 包括MenuBar,MenuItem等子类。AWT图形用户界面编程有:Container和LayoutManager,Container代表了一种容器,可以盛装普通的component,LayoutManager则是容器管理其他组件布局的方式。

   


     布局管理器:容器中的组件排放方式,包括:FlowLayout流式布局器,从左到右的顺序排列,Panel默认的布局管理器。BorderLayout:东西南北,Frame默认的布局管理器。GridLayout:卡片布局管理器,选项卡。GridBagLayout:非规矩的矩阵。


   我们需要知道AWT中各容器之间的关系如下图所示。


    component里常用的方法来设置组件大小位置,setLocation(x,y),setSize(w,h),setBounds(x,y,w,h) 同时设置大小,位置。setVisible(boolean b)设置组件可见性。

      Frame作为Windows的子类具有标题,可拖动改变位置大小,初始化不可见,需要设置可见。默认的管理器是BorderLayout。

Frame f=new Frame(“名称”);
f.setBounds()
f.setLayout();
Button b=new Button(" ");
f.add(b);
f.setVisible;

 

      上面的一些步骤说明创建图形化界面的过程:1.创建Frame窗体,2.对窗体进行基本大小位置的设置.3.定义组件,4.将组件通过窗体add方法来添加到窗体中,5.让窗体显示。

    事件监听机制如下图所示,事件监听机制的特点:事件源是指AWT包盒子Swing包中的那些图形化界面组件,事件是指每一个事件源都有自己特有的对应事件和共性事件。监听器将可以触发某一个事件的动作都已经封装到了监听器中。我们需要对事件产生的动作进行处理。

  实现事件监听器类,必须实现一个—listener接口,创建普通组件,创建事件监听对象。调用add—listener方法将事件监听器对象注册给普通组件。

 public class Eventqs
 {
    private Frame f=new Frame("");
    private Button b=new Button("ok");
    private TextField tf=new TextField(30);
    public void init
      {
    	b.addActionListener(new bListener());            // 注册事件监听器
   public void KeyPressed(keyEvent e)
   {
       
    }
}
)

     f.add(tf); f.add(b,BorderLayout.SOUTH); f.Pack(); f.setVisible(true); } class bListener implements ActionListener { public void actionPerformed(ActionEvent e) //定义的方法就是事件的处理器,用于响应特定事件 { tf.setText(" "); } } }

 
      
如何确定我们需要—Listener呢,可以根据我们需要操作的对象来。比如,操作的是窗口那么可能是Windows,按钮可能就是actionListener等等。 

      鼠标事件与键盘事件属于低级事件。按钮加事件最好使用Actionlistener,如果加click,则click先执行。我们给but添加一个键盘监听 ,鼠标的事件监听器也是同样的。

b.addKeyListener(new KeyAdapter()
{
   public void KeyPressed(KeyEvent e)
   {
    
   }
})

  Dialog是Window类的子类,属于特殊组件,对话框可以独立存在的顶级窗口, 因此用法和普通的窗口用法几乎一样,注意的两点是对话框依赖于其他窗口,对话框有非模式和模式两种,模式为真的,不处理这个窗口其他窗口也没有办法处理。

 <pre name="code" class="java">       f=new Frame("  ");
	 f.setBounds(100,110,120,130);
	 f.setLayout(new FlowLayout());
	 tf=new TextField(60);
	 but=new Button("  ");
	 ta=new TextArea(25,70);
	 d=new Dialog(f,"  ",true);
         d.setBouds(200,200,200,200);
	 lab=new Label();
	 ok=new Button("  ");
	 d.add(lab);
	 d.add(but);
	 f.add(tf);
	 f.add(but);
	 f.add(ta);

 
      
菜单栏,菜单条,菜单项。 MenuBar可盛装 Menu,Menu可盛装MenuItem,我们在创建了MenuItem,Menu,MenuBar对象之后,调用add方法将多个组件组成菜单,在调用MenuBar的add方法将多个Menu组合成菜单条,最后调用Frame对象的setMenuBar方法为该窗口添加菜单条。 

 mb=new MenuBar();
 m=new Menu(" ");
 subMenu=new Menu("  ");
 closeItem=new MenuItem(" ");
 subMenu.add(subItem);
 m.add(subMenu);
 m.add(closeItem);
 mb.add(m);
    FileDialog作为Dialog的子类,代表了一个文件对话框,用于打开和保存文件。FileDialog提供两个功能来获取文件路径,getDirectory获取绝对路径,getFile获取被打开或保存的文件名。  下面的对话框本身就是Windows提供的文件对话框,所以当单击其中的图标,按钮等元素的时候,该对话框都能提供相应的动作。

FileDialog d1=new FileDialog(f,"  ",FileDialog.LOAD);
  FileDialog d2=new FileDialog(f,"  ",FileDialog.SAVE);
 Button b1=new Button(" open file ");
 Button b2=new Button(" save file ");
 public void init()
 {
	 b1.addActionListener(new ActionListener()
	 {
		 public void actionPerformed(ActionEvent e)
		 {
			 d1.setVisible(true);
			 System.out.println(d1.getDirectory()+d1.getFile());
		 }
	 });
	 b2.addActionListener(new ActionListener()
	 {
		 public void actionPerformed(ActionEvent e)
		 {
			 d2.setVisible(true);
			 System.out.println(d2.getDirectory()+d2.getFile());
		 }
	 });
	 f.add(b1);
	 f.add(b2);
	 f.pack();
	 f.setVisible(true);
 }
 




 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行和易用,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值