Java “将this强制转换为ActionListener”的意义


我在为我的black菜单单选按钮加载监听器(这个语句在结尾处)是发生了错误提示“类型 AbstractButton 中的方法 addActionListener(ActionListener)对于参数(MyMenuFrame)不适用”,然后快速修正那里就有了“将this强制转换为ActionListener”。为什么呢????
以下为详细编码package 第6章;

   
  import java.awt.event.ActionListener;
  

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JRadioButtonMenuItem;
public class Try {
public static void main(String[] args) {
MyMenuFrame frame=new MyMenuFrame();


}
}
class MyMenuFrame extends JFrame {
MyMenuFrame(){
this.setSize(400,300);
JMenuBar menuBar = new JMenuBar();
this.setJMenuBar(menuBar);
JMenu fileMenu = new JMenu("File");
JMenu fromatMenu = new JMenu("Fromat");
menuBar.add(fileMenu);
menuBar.add(fromatMenu);
JMenu colorItem = new JMenu("color");
JMenu fontItem = new JMenu("font");
fromatMenu.add(colorItem);
fromatMenu.add(fontItem);
JRadioButtonMenuItem black =new JRadioButtonMenuItem("Black");
JRadioButtonMenuItem blue =new JRadioButtonMenuItem("Blue");
JRadioButtonMenuItem red =new JRadioButtonMenuItem("Red");
JRadioButtonMenuItem green =new JRadioButtonMenuItem ("Green");
JRadioButtonMenuItem plain = new JRadioButtonMenuItem("Plain");
JRadioButtonMenuItem blod =new JRadioButtonMenuItem("Bold");
JRadioButtonMenuItem italic =new JRadioButtonMenuItem("Italic");

colorItem.add(black );
colorItem.add(blue) ;
colorItem.add(red );
colorItem.add(green);
fontItem.add(plain);//常规
fontItem.add(blod);//加粗
black.addActionListener(( this );

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);}

}

java

淡定的小飞人 9 years, 8 months ago

这个IDE的提示而已,不够准确
实际上,你真的强制转换后,也会报错的。

应该让this实现ActionListener接口

贝尔海灵顿 answered 9 years, 8 months ago

Your Answer