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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陶辰 中级黑马   /  2012-11-21 09:04  /  1486 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.ttc;

import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.JobAttributes.DialogType;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class test6 extends Frame implements ActionListener
{
static Frame frm = new Frame();
static Label welcome = new Label("请关闭对话框");
static Dialog dlg = new Dialog(frm);
static Button Close_btn = new Button("关闭");
static Button Cancel_btn = new Button("取消");
static WinLis wlis = new WinLis();
public static void main (String args[])
{
frm.setTitle("Dialog");
frm.setSize(200,150);
frm.setLocation(200, 200);
welcome.setAlignment(Label.CENTER);
dlg.setTitle("你确定要关闭?");
dlg.setSize(160, 120);
dlg.setLayout(new FlowLayout(FlowLayout.CENTER,5,30));
dlg.add(Close_btn);
dlg.add(Cancel_btn);
Close_btn.addActionListener((ActionListener) frm);
Cancel_btn.addActionListener((ActionListener) frm);
frm.addWindowListener(wlis);
frm.setVisible(true);
}
static class WinLis extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
dlg.setLocation(230, 200);
dlg.show();
}
}
public void actionPerformed(ActionEvent e)
{
Button btn = (Button)e.getSource();
if(btn == Close_btn)
{
dlg.dispose();
frm.dispose();
}
else if(btn == Cancel_btn);
dlg.hide();
}
}
为什么会报
Exception in thread "main" java.lang.ClassCastException: java.awt.Frame
        at com.ttc.test6.main(test6.java:33)

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 类型转换异常

查看全部评分

1 个回复

倒序浏览
Frame 并没有实现ActionListener接口,你定义的类test6才实现了ActionListener接口,看代码注释:
  1. package com.ttc;

  2. import java.awt.Button;
  3. import java.awt.Dialog;
  4. import java.awt.FlowLayout;
  5. import java.awt.Frame;
  6. import java.awt.JobAttributes.DialogType;
  7. import java.awt.Label;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.event.ComponentListener;
  11. import java.awt.event.WindowAdapter;
  12. import java.awt.event.WindowEvent;
  13. public class test6 extends Frame implements ActionListener
  14. {
  15. static Frame frm = new Frame();//你这里用的是Frame来构造 frm对象,Fram没有实现ActionListener接口
  16. static Label welcome = new Label("请关闭对话框");
  17. static Dialog dlg = new Dialog(frm);
  18. static Button Close_btn = new Button("关闭");
  19. static Button Cancel_btn = new Button("取消");
  20. static WinLis wlis = new WinLis();
  21. public static void main (String args[])
  22. {
  23. frm.setTitle("Dialog");
  24. frm.setSize(200,150);
  25. frm.setLocation(200, 200);
  26. welcome.setAlignment(Label.CENTER);
  27. dlg.setTitle("你确定要关闭?");
  28. dlg.setSize(160, 120);
  29. dlg.setLayout(new FlowLayout(FlowLayout.CENTER,5,30));
  30. dlg.add(Close_btn);
  31. dlg.add(Cancel_btn);
  32. Close_btn.addActionListener((ActionListener) frm);//Fram没有实现ActionListener接口,无法转换类型
  33. Cancel_btn.addActionListener((ActionListener) frm);//Fram没有实现ActionListener接口,无法转换类型
  34. frm.addWindowListener(wlis);
  35. frm.setVisible(true);
  36. }
  37. static class WinLis extends WindowAdapter
  38. {
  39. public void windowClosing(WindowEvent e)
  40. {
  41. dlg.setLocation(230, 200);
  42. dlg.show();
  43. }
  44. }
  45. public void actionPerformed(ActionEvent e)
  46. {
  47. Button btn = (Button)e.getSource();
  48. if(btn == Close_btn)
  49. {
  50. dlg.dispose();
  51. frm.dispose();
  52. }
  53. else if(btn == Cancel_btn);
  54. dlg.hide();
  55. }
  56. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马