当前位置: 代码迷 >> J2SE >> 菜单栏如何添加监听器代码
  详细解决方案

菜单栏如何添加监听器代码

热度:52   发布时间:2016-04-23 20:29:51.0
菜单栏怎么添加监听器代码
我写了一下代码:
     JMenu mt = new JMenu("堆栈");
     Monitor bh = new Monitor(s1);
    mt.addActionListener(bh);

class Monitor implements ActionListener, ListSelectionListener {
private String s1;
public  Monitor(String s) {
s1 = s;
}
public void valueChanged(ListSelectionEvent e) {
System.out.println("sdfa");
}
public void actionPerformed(ActionEvent e) {
try {
System.out.println("asdfasd");
BufferedReader br = new BufferedReader(new FileReader("D:\\java\\Test1\\45678.txt"));        //读取字符流
String s = null;
while((s = br.readLine()) != null) {        //一行一行的读取br的文件
s1 = s1 + s +"\n";
}
      br.close();
} catch (IOException e1) {
e1.printStackTrace();
}

}
}


  可是堆栈的菜单,实现不了Monitor这个事件
------解决方案--------------------
看下面的测试代码,点击 about 的menu 下面的 about author 只有 jmenu没有监听,只有子菜单有监听,jmenu如果能有监听就不是menu了,是 工具栏Jtool了
package com.wanju.project001.zonghe.test;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class MyJMenu {
JFrame myFrame;
JMenuBar menubar;
JMenu file, edit, view, viewSub, about;
JMenuItem newFile, openFile, saveFile, exit, copy, pause, full, part,
viewSub_full, viewSub_part, author, help;

public MyJMenu() {
myFrame = new JFrame("Chevi.C J Menu");
myFrame.setSize(200, 300);
myFrame.setLocation(400, 400);
myFrame.setVisible(true);

// 利用事件监听关闭.
myFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
menubar = getMenu();
// 注意,是setJMenuBar(),二不是awt的setMenuBar()...!!!!
myFrame.setJMenuBar(menubar);
}

// 菜单设置
public JMenuBar getMenu() {
menubar = new JMenuBar();

file = new JMenu("file");
edit = new JMenu("edit");
view = new JMenu("view");
viewSub = new JMenu("viewSon");
about = new JMenu("about");
newFile = new JMenuItem("new a file..");
openFile = new JMenuItem("open a file..");
saveFile = new JMenuItem("save..");
exit = new JMenuItem("exit");
file.add(newFile);
file.add(openFile);
file.add(saveFile);
// 添加分割线,和awt中的不同,awt中的菜单项可以用"-"表示分割线.
file.addSeparator();
file.add(exit);

menubar.add(file);

copy = new JMenuItem("copy");
pause = new JMenuItem("pause");
edit.add(copy);
edit.add(pause);
menubar.add(edit);
full = new JMenuItem("full screen");
part = new JMenuItem("window style");
view.add(full);
view.add(part);
viewSub_full = new JMenuItem("second full");
viewSub_part = new JMenuItem("second part");
viewSub.add(viewSub_full);
viewSub.add(viewSub_part);
// Menu add Menu......
view.add(viewSub);
menubar.add(view);
author = new JMenuItem("about Author");
help = new JMenuItem("help");
about.add(author);
about.add(help);
menubar.add(about);
Monitor m = new Monitor("hello");
author.addActionListener(m);
return menubar;

}

public static void main(String[] args) // ~!@
{
new MyJMenu();
}
}

class Monitor implements ActionListener, ListSelectionListener {
private String s1;

public Monitor(String s) {
s1 = s;
}

public void valueChanged(ListSelectionEvent e) {
System.out.println("sdfa");
}

public void actionPerformed(ActionEvent e) {
try {
System.out.println("asdfasd");
BufferedReader br = new BufferedReader(new FileReader(
"D:\\img\\a.txt")); // 读取字符流
String s = null;
while ((s = br.readLine()) != null) { // 一行一行的读取br的文件
s1 = s1 + s + "\n";

}
br.close();
System.out.println(s1);
  相关解决方案