求指导——菜单栏菜单监听器不响应

Qinvord 2013-09-02 07:12:43
有界面,运行时NullPointerException,不知道哪不对,求指导,代码如下

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class MenuFrame implements ActionListener,ItemListener{
JFrame mFrame;
JMenuBar menuBar;
JMenu menu,help,subMenu;
JTextArea textArea;
JMenuItem redItem,blueItem,exitItem,helpItem;
JCheckBoxMenuItem cbItem;

public void go(){
mFrame=new JFrame();
mFrame.setSize(600,400);
mFrame.setResizable(false);

JTextArea textArea=new JTextArea();
textArea.setEditable(false);
JScrollPane scroll=new JScrollPane(textArea);
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

menuBar=new JMenuBar ();
menu=new JMenu("Manage");
menuBar.add(menu);

subMenu=new JMenu("Color");
menu.add(subMenu);
redItem=new JMenuItem("Red");
blueItem=new JMenuItem("Blue");
subMenu.add(redItem);
subMenu.add(blueItem);
menu.addSeparator();

cbItem=new JCheckBoxMenuItem("Check Box");
menu.add(cbItem);

exitItem=new JMenuItem("Exit");
menu.add(exitItem);

help=new JMenu("Help");
//menuBar.setHelpMenu(help);
menuBar.add(help);
helpItem=new JMenuItem("help");
help.add(helpItem);

mFrame.setJMenuBar(menuBar);
mFrame.getContentPane().add(scroll,BorderLayout.CENTER);

mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mFrame.setVisible(true);

redItem.addActionListener(new RedListener());
blueItem.addActionListener(new BlueListener());
cbItem.addItemListener(new CBListener());
helpItem.addActionListener(new HelpListener());
exitItem.addActionListener(new ExitListener());

}

public static void main(String args[]) throws Exception{
MenuFrame frame=new MenuFrame();
frame.go();
}

class RedListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
textArea.setForeground(Color.RED);
System.out.println("change color");
}
}

class BlueListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
textArea.setForeground(Color.BLUE);
System.out.println("change color");
}
}

class CBListener implements ItemListener{
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED){
textArea.append("Check Box is checked\n");
System.out.println("checked");
}
else{
textArea.append("Check Box is un-checked\n");
System.out.println("unchecked");
}
}
}

class HelpListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
System.out.println("help");
textArea.append("this is help message:\n");
textArea.append("manage->color button can change text color\n");
textArea.append("after check is check or un-checked,text will display result\n");
}
}

class ExitListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
}
...全文
554 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Qinvord 2013-09-02
  • 打赏
  • 举报
回复
非常感谢!!
Qinvord 2013-09-02
  • 打赏
  • 举报
回复
能不能说下具体怎么修改,不是太明白
地下室森林 2013-09-02
  • 打赏
  • 举报
回复
贴上完整代码
package bbs0902;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class MenuFrame{
	JFrame mFrame;
	JMenuBar menuBar;
	JMenu menu,help,subMenu;
	JTextArea textArea;
	JMenuItem redItem,blueItem,exitItem,helpItem;
	JCheckBoxMenuItem cbItem;
	
	public void go(){
		mFrame=new JFrame();
		mFrame.setSize(600,400);
		//mFrame.setResizable(false);
		//mFrame.setLayout(new GridLayout());
		
		final JTextArea textArea=new JTextArea();
		//textArea.setEditable(false);
		JScrollPane scroll=new JScrollPane(textArea);
		scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		
		menuBar=new JMenuBar ();
		menu=new JMenu("Manage");
		menuBar.add(menu);
		
		 subMenu=new JMenu("Color");
		menu.add(subMenu);
		 redItem=new JMenuItem("Red");
		 blueItem=new JMenuItem("Blue");
		subMenu.add(redItem);
		subMenu.add(blueItem);
		menu.addSeparator();
		
		 cbItem=new JCheckBoxMenuItem("Check Box");
		menu.add(cbItem);
		
		 exitItem=new JMenuItem("Exit");
		menu.add(exitItem);
		
		help=new JMenu("Help");
		//menuBar.setHelpMenu(help);
		menuBar.add(help);
		 helpItem=new JMenuItem("help");
		help.add(helpItem);
		
		mFrame.setJMenuBar(menuBar);
		mFrame.getContentPane().add(scroll,BorderLayout.CENTER);
		
		mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mFrame.setVisible(true);
		
		redItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				redItem.setForeground(Color.RED);
				System.out.println("Check!");
			}
		});
		blueItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				blueItem.setForeground(Color.BLUE);
			}
		});
		cbItem.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				if(e.getStateChange()==ItemEvent.SELECTED){
					textArea.append("Check Box is checked\n");
				}
				else{
					textArea.append("Check Box is un-checked\n");
				}
			}
		});
		helpItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				textArea.append("this is help message:\n");
				textArea.append("manage->color button can change text color\n");
				textArea.append("after check is check or un-checked,text will display result\n");
			}
		});
		exitItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
	}
	
	public static void main(String args[]) throws Exception{
		MenuFrame frame=new MenuFrame();
		frame.go();
	}
}
地下室森林 2013-09-02
  • 打赏
  • 举报
回复
你在设置监听器的时候是这样写的 redItem.addActionListener(new RedListener()); 也就是你是调用 RedListener 类的构造方法,但是你在写 RedListener 类的时候没有重写构造方法,所以默认的构造方法为空。
Qinvord 2013-09-02
  • 打赏
  • 举报
回复
从发下代码
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class MenuFrame implements ActionListener,ItemListener{
	JFrame mFrame;
	JMenuBar menuBar;
	JMenu menu,help,subMenu;
	JTextArea textArea;
	JMenuItem redItem,blueItem,exitItem,helpItem;
	JCheckBoxMenuItem cbItem;
	
	public void go(){
		mFrame=new JFrame();
		mFrame.setSize(600,400);
		mFrame.setResizable(false);
		
		JTextArea textArea=new JTextArea();
		textArea.setEditable(false);
		JScrollPane scroll=new JScrollPane(textArea);
		scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		
		menuBar=new JMenuBar ();
		menu=new JMenu("Manage");
		menuBar.add(menu);
		
		 subMenu=new JMenu("Color");
		menu.add(subMenu);
		 redItem=new JMenuItem("Red");
		 blueItem=new JMenuItem("Blue");
		subMenu.add(redItem);
		subMenu.add(blueItem);
		menu.addSeparator();
		
		 cbItem=new JCheckBoxMenuItem("Check Box");
		menu.add(cbItem);
		
		 exitItem=new JMenuItem("Exit");
		menu.add(exitItem);
		
		help=new JMenu("Help");
		//menuBar.setHelpMenu(help);
		menuBar.add(help);
		 helpItem=new JMenuItem("help");
		help.add(helpItem);
		
		mFrame.setJMenuBar(menuBar);
		mFrame.getContentPane().add(scroll,BorderLayout.CENTER);
		
		mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mFrame.setVisible(true);
		
		redItem.addActionListener(new RedListener());
		blueItem.addActionListener(new BlueListener());
		cbItem.addItemListener(new CBListener());
		helpItem.addActionListener(new HelpListener());
		exitItem.addActionListener(new ExitListener());
	}
	
	public static void main(String args[]) throws Exception{
		MenuFrame frame=new MenuFrame();
		frame.go();
	}
	
	class RedListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			textArea.setForeground(Color.RED);
		}
	}
	
	class BlueListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			textArea.setForeground(Color.BLUE);
		}
	}
	
	class CBListener implements ItemListener{
		public void itemStateChanged(ItemEvent e) {
			if(e.getStateChange()==ItemEvent.SELECTED){
				textArea.append("Check Box is checked\n");
			}
			else{
				textArea.append("Check Box is un-checked\n");
			}
		}
	}
	
	class HelpListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			textArea.append("this is help message:\n");
			textArea.append("manage->color button can change text color\n");
			textArea.append("after check is check or un-checked,text will display result\n");
		}
	}
	
	class ExitListener implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			System.exit(0);
		}
	}
}
Qinvord 2013-09-02
  • 打赏
  • 举报
回复
求帮忙!!!!!!!
为不为 2013-09-02
  • 打赏
  • 举报
回复

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧