黑马程序员_JavaGUI总结

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

修改组件的默认事件处理方式:

调用相应processXXXEvent事件;

调用enablesEvent,可以在没有注册事件监听器的情况下,仍然对事件作出反应;

编程实例(当鼠标移动到按钮上面时,按钮就移动开,这样鼠标永远也无法点击按钮)

import java.awt.*;
import java.awt.event.*;
class MyButton extends Button
{
 private MyButton another;
 public void getAnother(MyButton another)
 {
  this.another=another;
 }
 public MyButton(String s)
 {
  super(s);
  this.enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);
 }
 protected void processMouseMotionEvent(MouseEvent e)
 {
  another.setVisible(true);
  setVisible(false); 
 }
}
class MyWindowListener extends WindowAdapter
{
 public void windowClosing(WindowEvent e)
 {
  e.getWindow().setVisible(false);
  e.getWindow().dispose();
  System.exit(0);
 }
}
class testmybutton
{
 public static void main(String[] args)
 {
 Frame f=new Frame("永远也抓不到我。。。");
 f.setSize(800,600);
 MyButton b1=new MyButton("你来抓我啊");
        MyButton b2=new MyButton("你来抓我啊");
 f.add(b1,"East");
 f.add(b2,"West");
 b1.getAnother(b2);
 b2.getAnother(b1);
 f.addWindowListener(new MyWindowListener());
 f.setVisible(true); 
 b2.setVisible(false);
 } 
}


system.in和system.out是两个特殊的流对象,前者对应键盘,后者对应显示器,前者是inputstream类型的,后者是printstream类型的,printstream是outputstream的一个子类。

GUI(graphical user interface) 图形用户界面,jdk提供awt和swing两个包,用于GUI程序开发

GUI可分为两大类,基本组件和容器,分别是java.awt.Component和java.awt.Container的直接和间接子类

GUI的程序部分由AWT线程管理

创建窗体的实例:

import java.awt.*;
class gui
{
 public static void main(String[] args)
 {
  Frame f=new Frame("hello world!");
  f.setVisible(true);
  f.setSize(500,300);
  f.add(new Button("weijingning"));
  try
  {
   Thread.sleep(1000);
  }
  catch(Exception e){}

  // f.setVisible(false);
   f.dispose();
  
 }
}

事件处理机制

1.事件:对组件的操作就是一个事件;

2.事件源:发生操作的组件就是事件源;

3.事件处理器:处理事件的成员方法;


一个画图板的实例:

import java.awt.*;
import java.awt.event.*;
class DrawLine2
{
Frame f=new Frame("大家来画图");
public static void main(String[] args)
{
new DrawLine2().init();
}
public void init()
{
f.setSize(1000,800);
f.setVisible(true);
f.addMouseListener(new MouseAdapter()
{
int orgX;
int orgY;
public void mousePressed(MouseEvent e)
{
orgX=e.getX();
orgY=e.getY();
}
public void mouseReleased(MouseEvent e)
{
Graphics g=f.getGraphics();
g.setColor(Color.ORANGE);
g.setFont(new Font("行书",Font.ITALIC|Font.BOLD,30));
/* g.drawString(new String(orgX+","+orgY),orgX,orgY);
g.drawString(new String(e.getX()+","+e.getY()),e.getX(),e.getY());*/
g.drawLine(orgX,orgY,e.getX(),e.getY());
}
});
f.addWindowListener(new WindowAdapter()//实现窗口关闭的功能
{
public void windowClosing(WindowEvent e)
{
f.setVisible(false);
f.dispose();
System.exit(0);
}
});
}
}


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值