首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2013-09-05 
求指导——菜单栏菜单监听器不响应有界面,运行时NullPointerException,不知道哪不对,求指导,代码如下import

求指导——菜单栏菜单监听器不响应
有界面,运行时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);
}
}
}

[解决办法]
贴上完整代码

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();
}
}

热点排行