java-当调用右键菜单以后,怎么才能再次使用编辑菜单?或者说让编辑菜单恢复?

问题描述

当调用右键菜单以后,怎么才能再次使用编辑菜单?或者说让编辑菜单恢复?

import java.awt.CheckboxMenuItem;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.Panel;
import java.awt.PopupMenu;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class SimpleMenu {
private Frame f = new Frame("测试");
private MenuBar mb = new MenuBar();
PopupMenu pop = new PopupMenu();
MenuItem line = new MenuItem("-");
Menu file = new Menu("文件");
Menu edit = new Menu("编辑");
MenuItem newItem = new MenuItem("新建", new MenuShortcut(KeyEvent.VK_N));
MenuItem saveItem = new MenuItem("保存", new MenuShortcut(KeyEvent.VK_S));
MenuItem exitItem = new MenuItem("退出", new MenuShortcut(KeyEvent.VK_X));
CheckboxMenuItem autoWrap = new CheckboxMenuItem("自动换行");
MenuItem copyItem = new MenuItem("复制", new MenuShortcut(KeyEvent.VK_C));
MenuItem pasteItem = new MenuItem("粘贴", new MenuShortcut(KeyEvent.VK_V));
Menu format = new Menu("格式");
MenuItem commentItem = new MenuItem("注释", new MenuShortcut(
KeyEvent.VK_SLASH, true));
MenuItem cancelItem = new MenuItem("取消注释");
private TextArea ta = new TextArea(6, 40);

public void init() {
    ActionListener menuListener = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String cmd = e.getActionCommand();
            ta.append("单击”" + cmd + "“菜单" + "n");
            if (cmd.equals("退出")) {
                System.exit(0);

            }
        }
    };
    ActionListener editListener = new ActionListener() {

        public void actionPerformed(ActionEvent e) {

            // 再次为编辑菜单里添加 自动换行 复制 粘贴组件
            edit.add(autoWrap);
            edit.add(line);
            edit.add(copyItem);
            edit.add(pasteItem);
            // 格式菜单
            format.add(commentItem);
            format.add(cancelItem);
            edit.add(line);
            // 将格式菜单加入编辑菜单成为二级菜单
            edit.add(format);

            // 将文件、 编辑菜单 加入到mb 菜单条中
            mb.add(file);
            mb.add(edit);
            // 为F窗口设置菜单条
            f.setMenuBar(mb);

        }
    };
    commentItem.addActionListener(menuListener);
    exitItem.addActionListener(menuListener);
     edit.addActionListener(editListener);
    // 为文件菜单添加 新建 保存退出组件

    file.add(newItem);

    file.add(saveItem);
    file.add(exitItem);

    // 再次为编辑菜单里添加 自动换行 复制 粘贴组件
    edit.add(autoWrap);
    edit.add(line);
    edit.add(copyItem);
    edit.add(pasteItem);
    // 格式菜单
    format.add(commentItem);
    format.add(cancelItem);
    edit.add(line);
    // 将格式菜单加入编辑菜单成为二级菜单
    edit.add(format);

    // 将文件、 编辑菜单 加入到mb 菜单条中
    mb.add(file);
    mb.add(edit);
    // 为F窗口设置菜单条
    f.setMenuBar(mb);

    final Panel p = new Panel();

    // 添加鼠标右键监听器
    ta.addMouseListener(new MouseAdapter() {
        public void mouseReleased(MouseEvent e) {
            if (e.isPopupTrigger()) {
                f.add(p);
                // 添加右键菜单功能。
                pop.add(autoWrap);
                pop.add(line);
                pop.add(copyItem);
                pop.add(pasteItem);
                pop.add(line);
                pop.add(format);
                // 创建 panel 窗口,将右键菜单加入到p窗口中

                p.setPreferredSize(new Dimension(600, 160));
                p.add(pop);

                pop.show(p, e.getX(), e.getY());

            }
        }
    });

    // 将p窗口添加到f中
    f.add(ta);

    // 以匿名内部类的形式创建事件监听器对象
    f.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });

    f.pack();
    f.setVisible(true);
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    new SimpleMenu().init();
}

}

时间: 2024-10-23 16:30:35

java-当调用右键菜单以后,怎么才能再次使用编辑菜单?或者说让编辑菜单恢复?的相关文章

java方法调用的问题 这个repaint()调的是哪个 为什么啊??

问题描述 java方法调用的问题 这个repaint()调的是哪个 为什么啊?? public class test { public static void main(String[] args) { new test().start(); } public void start(){ new A().m(); } class A{ public void m(){ repaint(); } public void repaint(){ System.out.println("nihao&qu

java中 使用while(Scanner.hasNextIn()) 怎么才能停下来。。。。。。。

问题描述 java中 使用while(Scanner.hasNextIn()) 怎么才能停下来....... 需求是:通过键盘随意输入几个数字,然后转变成数组,并排序 问题:while(Scanner.hasNextInt())停不下来,一直等待输入,试过以字母.符号结尾,但是都不能让循环停下来......... 请各位大大们解疑释惑,或者是有更好的方法能够实现这个需求么? 解决方案 你需要在循环中调用 arr[i++] = scanner.nextInt(); 或者 scanner.next(

mongodb java-怎样在java中调用Mongodb内嵌文档中的值?

问题描述 怎样在java中调用Mongodb内嵌文档中的值? 大概的数据结构如下所示,可以使用mongodb的命令 db.first.find( {"EventParameter.TotalSeconds":3} )查询TotalSeconds为某一个数值,比如3数据,但是在java中怎么获取到所有的数值呢?如下面一行代码中get函数中的参数应该怎么写才能获取所有的时间? float seconds=Float.parseFloat(record.get("TotalSeco

《Android的设计与实现:卷I》——第2章2.4 在Java中调用JNI实现方法

2.4 在Java中调用JNI实现方法 本节介绍如何在Java中调用JNI实现方法.JNI数据类型转换.JNI方法命名规则,以及JNI方法签名规则. 2.4.1 Java数据类型与JNI数据类型转换 Java中调用Native方法传递的参数是Java类型的,这些参数需要经过Dalvik虚拟机转化为JNI类型才能被JNI层识别.下面分基本类型和引用类型介绍这种转化关系. 1.基本类型转化关系 表2-1列出了基本类型的转化关系. 2.引用类型转化关系 JNI的引用类型定义了九种数组类型,以及jobj

怎么通过java去调用并执行shell脚本以及问题总结

该文章来自阿里巴巴技术协会(ATA)精选集 背景 我们在开发过程中,大部分是java开发, 而在文本处理过程中,主要就是脚本进行开发. java开发的特点就是我们可以很早地进行TDDL, METAQ 等等地对接: 而脚本开发的特点就是在进行批处理的时候非常方便. 前阵子我遇到这么一个需求场景: 对抓取的数据进行打包, 后来又遇到我要通过脚本进行抓取,比如nodejs下基于phantomjs的casperjs爬虫. 解决方法 对于第一个问题:java抓取,并且把结果打包.  那么比较直接的做法就是

Java中调用外部命令

Java中调用外部命令 public class ExecCommond{ public ExecCommond(){} /** * 执行一条命令 * @param execStr String 命令字符串 * @return String 执行命令错误时的信息. */ public static String exec(String execStr) { Runtime runtime = Runtime.getRuntime(); 取得当前运行期对象 String outInfo="&quo

Java如何调用可执行文件和批处理命令

执行 引言    Java 是种跨平台的语言,我们经常碰到需要通过Java调用windows下某些程序.有些第三方厂商如(ANT),也提供了调用windows下可执行程序的方法,但我们往往需要调用一些批处理命令.而java 却不提供.    这里,我采用一种变相的调用方法,使得Java 能调用批处理命令.如果您有更好的方法,希望您能告诉我. 前期准备[/b]    Quick Batch File (De)Compiler     将任何BAT.CMD批处理脚本编译为EXE文件!  开始1.  

代码-java 如何调用 https 双向认证接口内容

问题描述 java 如何调用 https 双向认证接口内容 通过webservice获取一个https的内容,但这个网址需要pfx证书(证书和密码我都有,通过IE访问没问题),请问怎么通过 java webservice 代码去访问这个连接的内容? 解决方案 双向认证的话,http://love398146779.iteye.com/blog/2065423 解决方案二: 可以参考:http://blog.csdn.net/a351945755/article/details/22796797h

java 如何调用mwrf32.dll

问题描述 java 如何调用mwrf32.dll mwrf32.dll据说是ic读卡器的通用开发dll, 调用这个里边的方法都需要传递一个设备标识的字段, 这个字段是怎么获取的,我的环境是window8. 希望做过类似读卡器开发的大神帮助一下 解决方案 http://www.open-open.com/home/space-37924-do-blog-id-5681.html 解决方案二: java 调用user32.dll 锁定电脑使用ctypes调用kernel32.dll中的函数10.4.