当前位置:编程学习 > JAVA >>

怎么实现菜单项的事件?

这是本菜鸟的代码大神们看看打开、保存和退出怎么不对啊!
package Map;
import javax.swing.*;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.filechooser.FileNameExtensionFilter;
public class NumberAnalysis extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JMenuBar jJMenuBar = null;
private JMenu jMenu = null;
private JMenu jMenu1 = null;
private JMenu jMenu2 = null;
private JMenu jMenu3 = null;
private JMenuItem jMenuItem = null;
private JMenuItem jMenuItem1 = null;
private JMenuItem jMenuItem2 = null;


 ItemHandler itemHandler = new ItemHandler();
static JFileChooser fc = new JFileChooser();  
static FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");  
static {fc.setFileFilter(filter);}

private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
jJMenuBar = new JMenuBar();
jJMenuBar.add(getJMenu());
jJMenuBar.add(getJMenu1());
jJMenuBar.add(getJMenu2());
jJMenuBar.add(getJMenu3());
}
return jJMenuBar;
}


private JMenu getJMenu() {
if (jMenu == null) {
jMenu = new JMenu();
jMenu.setText("文件");
jMenu.add(getJMenuItem());
jMenu.add(getJMenuItem1());
jMenu.add(getJMenuItem2());

}
return jMenu;
}


private JMenu getJMenu1() {
if (jMenu1 == null) {
jMenu1 = new JMenu();
jMenu1.setText("视图");
}
return jMenu1;
}


private JMenu getJMenu2() {
if (jMenu2 == null) {
jMenu2 = new JMenu();
jMenu2.setText("工具");
}
return jMenu2;
}


private JMenu getJMenu3() {
if (jMenu3 == null) {
jMenu3 = new JMenu();
jMenu3.setText("帮助");
}
return jMenu3;
}


private JMenuItem getJMenuItem() {
if (jMenuItem == null) {
jMenuItem = new JMenuItem();
jMenuItem.setText("打开");
jMenuItem.addActionListener(itemHandler);
}
return jMenuItem;
}
private JMenuItem getJMenuItem1() {
if (jMenuItem1 == null) {
jMenuItem1 = new JMenuItem();
jMenuItem1.setText("保存");
jMenuItem1.addActionListener(itemHandler);
}
return jMenuItem1;
}


private JMenuItem getJMenuItem2() {
if (jMenuItem2 == null) {
jMenuItem2 = new JMenuItem();
jMenuItem2.setText("退出");
jMenuItem2.addActionListener(itemHandler);
}
return jMenuItem2;
}
public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {
public void run() {
NumberAnalysis thisClass = new NumberAnalysis();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}


public NumberAnalysis() {
super();
initialize();
}

private void initialize() {
this.setSize(300, 200);
this.setJMenuBar(getJJMenuBar());
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}

private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
}
return jContentPane;
}



class ItemHandler implements ActionListener {


public void actionPerformed(ActionEvent e) {

if(jMenuItem2.getText()=="退出"){
System.exit(0);
}
if(jMenuItem.getText()=="打开"){
fc.showOpenDialog(null);
}

if(jMenuItem1.getText()=="保存"){
fc.showSaveDialog(null);
}






}


}

--------------------编程问答-------------------- 啊,问题描述的有点模糊,再仔细说一遍:就是菜单项里面的打开、保存和退出功能怎样实现,我写的代码怎么运行出来三个菜单项都是一个功能,求支招@! --------------------编程问答-------------------- 咋没人回答呢 --------------------编程问答-------------------- 你最后的判断是永真
use
e.getSource()... --------------------编程问答--------------------
引用 3 楼 holzkoepfer 的回复:
你最后的判断是永真
use
e.getSource()...
不对啊,按你说的做了直接是运行按菜单项没反应啊! --------------------编程问答--------------------
class ItemHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Object o = e.getSource();
if (jMenuItem2 == o)
System.exit(0);
else if (jMenuItem == o)
fc.showOpenDialog(null);
else if (jMenuItem1 == o)
fc.showSaveDialog(null);
}
}
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,