BlogJava 联系 聚合 管理  

Blog Stats

News

 

蓝冰飞寒个人独立博客地址,www.uphenan.com

随笔档案

文章档案


蓝冰飞寒

用心去做每一件事情

     虽然事件接口和事件源繁多复杂, 但是处理事件的基本原理却很简单:
      即想要接受某个事件的类实现该事件监听器的接口,然后在事件源中注册自己,这样它就可以接收所要的事件,并通过监听器接口中的方法进行处理。此文中使用了三个监听器对象,一个是随机颜色按钮的监听器ColorActionListener,还有另外两个new出来的分别实现了颜色变暗和颜色变亮的监听器对象。
     事件源分别是随机颜色Button的ActionEvent对象,颜色变暗和颜色变亮的ActionEvent对象。
      当事件源对象发生ActionEvent事件的时候,会产生ActionEvent对象,此时编译器会把这个事件对象传个注册在该事件源的接口,由相应接口执行操作。充分体现了用户为主的操作体验,根据用户的动作来做出响应。这是事件驱动机制很好的地方,个人拙见。呵呵


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ButtonFrame  extends SimpleFrame{
  public ButtonFrame(int width,int height){
    super(width,height);
    setTitle("这是个按钮事件啊!");
    ColorPanel panel=new ColorPanel();
    Container contentPane=getContentPane();//返回此窗体的contentPane 对象
    contentPane.add(panel);
    
  }
/*注释用:getContentPane

public Container getContentPane()

    返回此窗体的 contentPane 对象

    指定者:
        接口 RootPaneContainer 中的 getContentPane

    返回:
        contentPane 属性*/
  //定义主函数,用来驱动ButtonFrame类
  public static void main(String[] args) {
    ButtonFrame frame=new ButtonFrame(400,300);
    frame.setVisible(true);
  }

}

class ColorPanel extends JPanel{
  public ColorPanel(){
    //创建组件
    colorButton =new JButton("随机颜色");
    darkerButton=new JButton("颜色变暗");
    brighterButton=new JButton("颜色变亮");
    colorText=new JTextArea(10,30);
    // 添加组件
    add(new JScrollPane(colorText));
    add(colorButton);
    add(darkerButton);
    add(brighterButton);
    setBackground(backgroundColor);
    //注册组件所监听的事件
    colorButton.addActionListener(new ColorActionListener());
    brighterButton.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent event){
        setBrighter();
      }
    });
    
  
  darkerButton.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent event){
      setDarker();
    }
  });
  
  }
  private void setBrighter(){
    backgroundColor=backgroundColor.brighter();
    changeColor();
  }
  private void setDarker(){
    backgroundColor=backgroundColor.darker();
    changeColor();
  }
  private class ColorActionListener implements ActionListener{
    public void actionPerformed(ActionEvent event){
      setColor();//设置面板的颜色
    }
    
  }
  private void changeColor(){
    int r=backgroundColor.getRed();
    int g=backgroundColor.getGreen();
    int b=backgroundColor.getBlue();
    colorText.append("颜色值:\tR="+r+"\t G="+g+"\t B="+b+"\n");
    this.setBackground(backgroundColor);
  }
  private void setColor(){
    //产生随机颜色
    int r=(int)(Math.random()*255);
    int g=(int)(Math.random()*255);
    int b=(int)(Math.random()*255);
    colorText.append("颜色值:\tR="+r+"\t G="+g+"\t B="+b+"\n");
     backgroundColor=new Color(r,g,b);//非常的重要, 我这句话少写了,弄了很长时间才弄好
    this.setBackground(backgroundColor);
  }
  private Color backgroundColor;
  private JButton colorButton;
  private JButton darkerButton;
  private JButton brighterButton;
  private JTextArea colorText;
}

Tags -
文章来源:http://www.tt-shopping.com/kevinlau/read.php/113.htm
posted on 2009-05-09 21:59 蓝冰飞寒 阅读(457) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: