GUI-01

news/2025/2/10 22:39:34/

 

 


创建图像化界面
1,创建frame窗体
2,对窗体进行基本设置
  比如大小,位置,布局
3,定义组件
4,将组件通过窗体的add方法添加到窗体中
5,让窗体显示,通过setVisible(true);


事件监听机制的特点:
1,事件源
2,事件
3,监听器
4,事件处理

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

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

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

以上三者,在java中都已经定义好了,
直接获取其对象来用就可以了。

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

 

import java.awt.*;
import java.awt.event.*;
class AwtDemo
{
 public static void main(String[] args)
 {
  Frame f = new Frame("my awt");//默认窗体不可见,默认边界布局
  f.setSize(500,400);//设置长和宽,即横坐标和纵坐标
  f.setLocation(300,200);//设置窗体出现在屏幕位置,即距离左边和上面距离
  f.setLayout(new FlowLayout());//设置窗体布局,设置为流式布局
  
  Button b = new Button("我是一个按钮");
  f.add(b);//添加按钮
  
  f.addWindowListener(new WindowAdapter()//匿名内部类
  {
   public void windowClosing(WindowEvent e)
   {
    System.out.println("我关"); 
    System.exit(0);
   }
   public void windowActivated(WindowEvent e)//窗口前置
   {
     System.out.println("我活了");
   }
   public void windowOpened(WindowEvent e)//打开窗口
   {
    System.out.println("我被打开了"); 
   }
    
  });// 添加指定窗口监听器
  
  f.setVisible(true);//设置显示窗体
  
  //System.out.println("hew");
 }
}
/*
class MyWin implements WindowListener
{
  //要覆盖7个方法,可是我只用到了关闭的动作。
  //其他动作都没有用到,可是却必须要复写。
}
*/
//因为WindowListener的子类WindowAdapter已经实现了
//WindListener接口。并覆盖了其中的所有方法。那么我
//只要继承自Windowadapter覆盖我需要的方法即可
class MyWin extends WindowAdapter
{
 public void windowClosing(WindowEvent e)
 {
  //System.out.println("window closing----"+e.toString()); 
  System.exit(0);//关闭窗口
 } 
}

-----------------------------------------------------------------------------

事件和图形化组件分离开

例:

import java.awt.*;
import java.awt.event.*;
class FrameDemo
{
 //定义该图形中所需的组件的引用
 private Frame f;
 private Button but;
 
 FrameDemo()//构造函数
 {
  init();
 }
 public void init() //此处定义图形界面
 {
  f = new Frame("my frame");
  
  //对frame进行基本设置
  f.setBounds(300, 100, 600, 500);//移动组件并调整大小 
  f.setLayout(new FlowLayout());
  
  but = new Button("my button");
  
  //将组件添加到frame中
  f.add(but);
  
  //加载窗体上事件
  myEvent(); //此处添加了关闭窗口的事件,
  
  //显示窗体
  f.setVisible(true);
 }
 
 private void myEvent() //此处定义事件 
 {
  f.addWindowListener(new WindowAdapter() //监听器,匿名内部类
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  }); 
  
  //让按钮具备退出程序的功能
  /*
  按钮就是事件源。
  那么选择哪个监听器呢?
  通过关闭窗体示例了解到,想要知道哪个组件具备什么
  样的特有监听器,需要查看该组件对象的功能。
  通过查阅button的描述,发现按钮支持一个特有监听
  addActionListener.
  */
  but.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.out.println("退出,按钮干的");
    System.exit(0); 
   } 
  });
 }
 
 public static void main(String[] args)//主函数
 {
  new FrameDemo(); //创建对象,产生窗体
 }
}

 --------------------------------------------------------------------------------

个人总结:记住窗口,按钮,文本框等一些相关命令,图形设计和事件分离,

要确定事件源,事件要写匿名内部类


http://www.ppmy.cn/news/576623.html

相关文章

GUI+

设置分辨率 C/C code DEVMODE dm;EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm);dm.dmPelsWidth 800;dm.dmPelsHeight 600;ChangeDisplaySettings(&dm, CDS_FULLSCREEN|CDS_SET_PRIMARY);

gui R

sudo apt-get install libcurl4-openssl-dev sudo apt-get install libssl-dev install.packages(‘yuima’) install.packages(‘yuimaGUI’) require(yuimaGUI) yuimaGUI()

开源gui_GUI和开源

开源gui There are frequently debates in open source circles about the impact of layering graphical user interfaces across Linux and Open Source applications. The issue revolves around encouraging GUI use to configure daemons (the Linux version of Windows s…

Merging With a GUI

源自:http://www.gitguys.com/topics/merging-with-a-gui/ Merging With a GUI Commands discussed in this section: git mergetool Merging With a GUI Git can also work with a large number of GUI tools for helping with merging. A couple of popular GUI t…

MySQL GUI Tools

MySQL GUI Tools是一套图形化桌面应用工具套装,可以用来管理MySQL服务器。该套装工具包含三个工具:MySQL Query Browser、MySQL Administrator和MySQL Migration Assistant(仅支持Windows平台)。在本文中,我们将介绍前两个工具,看…

Windows下Python程序打包小结

这还是之前的文章,最近发现了,还是存在网上好找些。 当然现在我的观念有点不一样了,纯Windows下桌面应用,还是Winform为首选,遇到复杂动画时用WPF控件。跨平台桌面应用,可以选择MONO,还可以用B…

开源GUI-Microwindows简介

*************************************************************************************************************************** 作者:EasyWave 时间:2014.06.07 类别:开源GUI系统-Microw…

jmeter源码---gui简单介绍

概述 二次开发JmeterGUI的源码需要有swing基础支持的支撑,不熟悉请自行学习,在此不做赘述 启动加载 src/core中org.apache.jmeter资源包,这是启动jmeter GUI的入口。 jmeter启动的入口类为NewDriver,启动核心为JMeter的start方…