0 0

JPopupMenu 在applet中的应用5

jpopupmenu在桌面应用程序中弹出后可以点击添加到它上面的组件,并触发组件对应的事件,并且jpopupmenu不隐藏,
可是将此组件放入到applet中弹出后,点击它上面添加的组件,就不会触发事件,并且jpopupmenu隐藏,这是什么原因,又没有什么解决办法。
代码如下:
import java.awt.Component;
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 javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JSeparator;
import javax.swing.JSlider;
import javax.swing.MenuElement;
import javax.swing.MenuSelectionManager;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;

public class MenuElementExample extends JPanel {

  public JPopupMenu popup;

  SliderMenuItem slider;

  int theValue = 0;

  public MenuElementExample() {

    popup = new JPopupMenu();
    slider = new SliderMenuItem();

    popup.add(slider);
    popup.add(new JSeparator());
    
    JButton jb = new JButton("Test");
    jb.addActionListener(new ActionListener(){

		public void actionPerformed(ActionEvent e) {
			
			System.out.println("Test is prass");
		}
    });
    popup.add(jb);
    popup.add(new JSeparator());
    
    JMenuItem ticks = new JCheckBoxMenuItem("Slider Tick Marks");
    ticks.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        slider.setPaintTicks(!slider.getPaintTicks());
      }
    });
    JMenuItem labels = new JCheckBoxMenuItem("Slider Labels");
    labels.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        slider.setPaintLabels(!slider.getPaintLabels());
      }
    });
    popup.add(ticks);
    popup.add(labels);
    popup.addPopupMenuListener(new PopupPrintListener());
    
    
    addMouseListener(new MousePopupListener());
  }

  // Inner class to check whether mouse events are the popup trigger
  class MousePopupListener extends MouseAdapter {
    public void mousePressed(MouseEvent e) {
      checkPopup(e);
    }

    public void mouseClicked(MouseEvent e) {
      checkPopup(e);
    }

    public void mouseReleased(MouseEvent e) {
      checkPopup(e);
    }

    private void checkPopup(MouseEvent e) {
      if (e.isPopupTrigger()) {
        popup.show(MenuElementExample.this, e.getX(), e.getY());
      }
    }
  }

  // Inner class to print information in response to popup events
  class PopupPrintListener implements PopupMenuListener {
    public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
    }

    public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
      theValue = slider.getValue();
      System.out.println("The value is now " + theValue);
    }

    public void popupMenuCanceled(PopupMenuEvent e) {
      System.out.println("Popup menu is hidden!");
      MenuElementExample.this.setVisible(true);
    }
  }

  public static void main(String s[]) {
    JFrame frame = new JFrame("Menu Element Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setContentPane(new MenuElementExample());
    frame.setSize(300, 300);
    frame.setVisible(true);
  }

  // Inner class that defines our special slider menu item
  class SliderMenuItem extends JSlider implements MenuElement {

    public SliderMenuItem() {
      setBorder(new CompoundBorder(new TitledBorder("Control"),
          new EmptyBorder(10, 10, 10, 10)));

      setMajorTickSpacing(20);
      setMinorTickSpacing(10);
    }

    public void processMouseEvent(MouseEvent e, MenuElement path[],
        MenuSelectionManager manager) {
    }

    public void processKeyEvent(KeyEvent e, MenuElement path[],
        MenuSelectionManager manager) {
    }

    public void menuSelectionChanged(boolean isIncluded) {
    }

    public MenuElement[] getSubElements() {
      return new MenuElement[0];
    }

    public Component getComponent() {
      return this;
    }
  }
}


applet运行代码:
import java.awt.AWTEvent;
import java.awt.BorderLayout;

import javax.swing.JApplet;

import jpopupmeun.MenuElementExample;

public class AppletTest extends JApplet {

	/* (non-Javadoc)
	 * @see java.applet.Applet#init()
	 */
	@Override
	public void init() {
		
		super.init();
		this.setLayout(new BorderLayout());
		
		this.enableEvents(AWTEvent.MOUSE_EVENT_MASK);
		
		MenuElementExample ex = new MenuElementExample();
		add(ex,BorderLayout.CENTER);
		
	}
	
}


Htmel文件:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="200" height="200"
codebase="">
<param name="code" value="AppletTest">
<param name="cache_option" value="NO">
</OBJECT>
2009年5月26日 17:18
目前还没有答案

相关推荐

    swing JPopupMenu 单击按钮弹出 例子下载

    在Java Swing库中,JPopupMenu是一个非常有用的组件,它用于创建弹出菜单,可以在鼠标点击或者其他用户交互事件触发时出现。这个例子下载是关于如何在单击按钮时弹出一个JPopupMenu的教程。下面我们将详细讲解相关的...

    pop.rar_pop

    在Applet中,弹出菜单的使用方式与普通窗口应用类似,但需要注意Applet的生命周期和安全性限制。你需要确保在`init()`方法中初始化弹出菜单,并在`destroy()`方法中清除资源。例如: ```java public void init() ...

    java swing-JPopupMenu的使用

    JPopupMenu 是 Java Swing 库提供的一个弹出菜单组件,它可以在用户触发事件时显示一个菜单,并允许用户选择其中的选项。

    Java应用程序-习题-第10章.doc

    2. 编写应用程序,实现下面输出的图形效果,要求在创建2个Panel面板类对象pleft、pright,将左边的4个标签放在面板pleft中,布局方式为GridLayout(4x1),需要设置水平、垂直间距;再将右边的其它组件放在另一个...

    swing系统托盘示例

    在实际应用中,可以将这个图标添加为一个新的菜单项,与之关联的动作是卸载或关闭应用程序。 总结来说,Swing的系统托盘功能让开发者能创建更加用户友好的桌面应用,即使在主窗口关闭后也能提供服务。通过`TrayTest...

    java实现系统托盘

    在Java编程中,实现系统托盘功能主要涉及到`java.awt.TrayIcon`类,这是Java Swing库的一部分,用于在操作系统的任务栏或系统托盘区域创建和管理图标。这个功能通常用于提供一种方式,使得即使主窗口被最小化或者...

    java复习题库(20211003212049).pdf

    Applet生命周期:Applet生命周期包括init、start、stop和destroy四个阶段,init方法在start方法之前执行,stop方法在Applet退出时被调用。 IO流处理:IO流处理可以使用BufferedInputStream类来实现流的重设和回到较...

    Java弹出菜单,为JTextArea添加了右键弹出式菜单,实现了复制、粘贴、剪切

    在 Java 中,弹出菜单通常是通过 JPopupMenu 类来实现的。今天,我们将学习如何使用 Java 弹出菜单来为 JTextArea 添加右键弹出式菜单,实现复制、粘贴、剪切功能。 一、Java 弹出菜单概述 Java 弹出菜单是一种 ...

    基于Java的实例源码-右键弹出菜单源码.zip

    在Java编程环境中,右键弹出菜单是一种常见的用户交互元素,它为用户提供了一种快捷的操作方式,特别是在桌面应用和图形用户界面(GUI)设计中。本实例源码着重讲解如何在Java中实现这一功能。 首先,Java中的Swing...

    Java右键弹出菜单源码

    在实际开发中,你可能需要根据项目需求进行自定义扩展,比如添加子菜单(`JMenu`嵌套在`JPopupMenu`中),或者为菜单项添加快捷键。此外,你还需要考虑国际化(I18N)支持,使得菜单文本可以适应不同语言的用户。 ...

    Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例

    在Swing中,我们可以利用菜单组件来提供用户友好的交互。本文将详细讲解如何使用下拉式菜单(menu)、弹出式菜单(JPopupMenu)以及选项卡窗体(JTabbedPane)。 首先,我们来看下拉式菜单的创建。下拉式菜单在Java...

    基于java的右键弹出菜单源码.zip

    在Java编程环境中,右键弹出菜单是一种常见的用户交互元素,它允许用户通过鼠标右键点击来触发一系列操作。...通过这个压缩包,你可以学习到如何在Java Swing应用程序中创建和使用右键菜单,从而提升你的GUI编程技能。

    java右键菜单源码

    在Java编程中,右键菜单(也称为上下文菜单)是一种常见的用户界面元素,它提供了一种方便的方式来响应用户在特定上下文中进行的操作,比如在桌面、文件浏览器或应用程序内部的右键点击。本资源“java右键菜单源码”...

    java swing综合程序

    在"Java Swing综合程序"中,我们将深入探讨如何使用Swing组件构建一个功能丰富的用户界面,包括菜单栏(JMenuBar)、工具栏(JPopupMenu)、组合框(JComboBox)、复选框(JCheckBox)和单选按钮(JRadioButton),...

    java media

    JMF允许开发者在Java应用程序中集成音频、视频和其他形式的流媒体。 ### JMF 的基本概念 - **定义**:Java Media Framework (JMF) 是Sun Microsystems为Java平台提供的一套多媒体开发工具包。它支持多种媒体格式的...

    基于Java的右键弹出菜单源码.zip

    这个“基于Java的右键弹出菜单源码.zip”文件很可能包含了一个实现这种功能的示例代码,对于学习和理解如何在Java应用中创建自定义的右键菜单非常有帮助。 在Java中,我们可以使用Swing或JavaFX库来创建右键弹出...

    Java右键弹出菜单源码.rar

    在Java编程中,右键弹出菜单(通常称为上下文菜单或者Context Menu)是一种常见的用户交互方式,特别是在桌面应用程序和图形用户界面(GUI)中。它允许用户在点击鼠标右键时显示一系列与当前选择对象相关的操作选项...

    JAVA程序菜单框架设计.pdf

    在该设计中,我们还使用了JPopupMenu组件来创建弹出式菜单。JPopupMenu是SWT库提供的弹出式菜单组件,用于在鼠标右键点击时弹出菜单项。 在代码中,我们首先创建了一个JFrame对象,用于容纳菜单系统。然后,我们...

    弹出菜单实例,点右键弹出菜单

    在本文中,我们将深入探讨弹出菜单的概念、实现方法以及其在不同编程环境中的应用。 一、弹出菜单的基本概念 弹出菜单,又称上下文菜单或快捷菜单,是当用户与界面上某一对象交互时,突然出现在鼠标指针位置的菜单...

Global site tag (gtag.js) - Google Analytics