A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 涐扪①起奮乧 中级黑马   /  2013-12-13 18:20  /  1139 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 涐扪①起奮乧 于 2013-12-14 10:12 编辑
  1. package cn.itcast;

  2. import java.awt.Button;
  3. import java.awt.FlowLayout;
  4. import java.awt.Frame;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.awt.event.KeyAdapter;
  8. import java.awt.event.KeyEvent;
  9. import java.awt.event.MouseAdapter;
  10. import java.awt.event.MouseEvent;
  11. import java.awt.event.WindowAdapter;
  12. import java.awt.event.WindowEvent;

  13. public class FrameDemoTest
  14. {
  15.         public static void main(String[] args)
  16.         {
  17.                 new FrameDemo();
  18.         }
  19. }
  20. class FrameDemo
  21. {
  22.         private Frame f;//作用于整个类
  23.         private Button but;//作用于整个类
  24.         int clickcount;
  25.         FrameDemo()//构造函数
  26.         {
  27.                 init();//调用
  28.         }
  29.         public void init()//初始化图形化界面
  30.         {
  31.                 f = new Frame("my frame");
  32.                 //对f进行基本设置
  33.                 f.setBounds(300, 100,600,500);
  34.                 f.setLayout(new FlowLayout());//按照流式布局
  35.                 Button but = new Button("我是按钮");
  36.                 f.add(but);//添加组件
  37.                 //加载一下窗体上的事件
  38.                 myEvent();
  39.                 f.setVisible(true);//显示窗体
  40.         }
  41.         private void myEvent()//事件
  42.         {
  43.                 //用匿名内部类来完成覆盖,让按钮具备退出功能
  44.                
  45.                  f.addWindowListener(new WindowAdapter(){
  46.                         public void windowClosing(WindowEvent e)
  47.                         {
  48.                                 System.exit(0);
  49.                         }
  50.                 });
  51.                 /**/
  52.                 /*
  53.                 //键盘事件
  54.                 but.addKeyListener(new KeyAdapter(){
  55.                         public void keyPressed(KeyEvent e)
  56.                         {
  57.                                 //设置功能关闭窗口
  58.                                 if(e.getKeyCode()==KeyEvent.VK_ENTER)//按回车键窗口关闭
  59.                                         System.exit(0);
  60.                                 sop(e.getKeyChar()+"..."+e.getKeyCode());
  61.                         }
  62.                 });
  63.                 */
  64.                  /**/
  65.                 //查看按钮具备什么样的监听器,需要查看该组件对象的功能
  66.                 but.addActionListener(new ActionListener(){
  67.                         public void actionPerformed(ActionEvent e)
  68.                         {
  69.                                 sop("退出,按钮操作的");
  70.                                 System.exit(0);
  71.                         }
  72.                 });
  73.                
  74.                 /*
  75.                 //鼠标事件,还是用匿名内部类
  76.                 but.addMouseListener(new MouseAdapter(){
  77.                         private int count = 1;
  78.                         public void mouseEvent(MouseEvent e)
  79.                         {
  80.                                 sop("鼠标进入到该组件"+count++);
  81.                         }
  82.                 });
  83.                 //点击按钮事件
  84.                 but.addMouseListener(new MouseAdapter(){
  85.                         public void mouseClick(MouseEvent e)
  86.                         {
  87.                                 sop("点击动作");
  88.                         }
  89.                 });
  90.                 but.addMouseListener(new MouseAdapter(){
  91.                         public void mouseEvent(MouseEvent e)
  92.                         {
  93.                                 
  94.                                 if(e.getClickCount()==2)
  95.                                         sop("双击动作"+clickcount++);
  96.                         }
  97.                 });
  98.                 //点击按钮与按钮活动同时存在时,点击先执行,活动按钮事件再发生
  99.                 but.addActionListener(new ActionListener(){
  100.                         public void actionPerformed(ActionEvent e)
  101.                         {
  102.                                 sop("action ok");
  103.                         }
  104.                 });
  105.                 */
  106.         }
  107.         public static void sop(Object obj)
  108.         {
  109.                 System.out.println(obj);
  110.         }
  111. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

4 个回复

正序浏览
王召轩 发表于 2013-12-13 19:27
第37行的Button去掉
出现空指针异常,  myEvent()中的button未被初始化。 你定义的  Button but = new Butt ...

谢谢,这个我没想到
回复 使用道具 举报
第37行的Button去掉
出现空指针异常,  myEvent()中的but未被初始化。 你定义的  Button but = new Button("我是按钮"); 只在 public void init() 函数里面有效。

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
第37行的Button去掉
出现空指针异常,  myEvent()中的button未被初始化。 你定义的  Button but = new Button("我是按钮"); 只在 public void init() 函数里面有效。
回复 使用道具 举报
运行到//查看按钮具备什么样的监听器,需要查看该组件对象的功能,这个事件时,结果报错
如下:
Exception in thread "main" java.lang.NullPointerException
        at cn.itcast.FrameDemo.myEvent(FrameDemoTest.java:68)
        at cn.itcast.FrameDemo.init(FrameDemoTest.java:40)
        at cn.itcast.FrameDemo.<init>(FrameDemoTest.java:29)
        at cn.itcast.FrameDemoTest.main(FrameDemoTest.java:19)
找了好几遍没找出错误
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马