博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JPopupMenu的使用以及JPopupMenu中子组件的事件处理
阅读量:6293 次
发布时间:2019-06-22

本文共 1986 字,大约阅读时间需要 6 分钟。

方法一:

import java.awt.FlowLayout;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.*;

public class JPopupMenuTest extends JFrame {

 public JPopupMenuTest() {
  JButton button = new JButton("登录");
  this.add(button);
  //为按钮添加单击事件
  button.addMouseListener(new MouseAdapter() {
   @Override
   public void mouseClicked(MouseEvent e) {
    System.out.println("按到了");
   }
  });  
  final String id= button.getText();
  //为按钮创建一个右键菜单
  JPopupMenu pop = new JPopupMenu(id);
  JMenuItem item1 = new JMenuItem("功能1");
  item1.addMouseListener(new MouseAdapter(){
   public void mouseReleased(MouseEvent e) {
    System.out.println(id);//输出按钮的文本
   }
  });
  pop.add(item1);
  button.setComponentPopupMenu(pop);//将按钮与右键菜单关联
  
  this.setLayout(new FlowLayout());
  this.setBounds(100, 100, 300, 300);
  this.setVisible(true);

 }

 

 public static void main(String[] args) {

  new JPopupMenuTest();

 }

}

 

方法二:

import java.awt.FlowLayout;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.*;

public class JPopupMenuTest extends JFrame {

 public JPopupMenuTest() {    
  JButton button2 = new JButton("101");
  this.add(button2);
  button2.addMouseListener(new MouseAdapter() {
   @Override
   public void mouseReleased(MouseEvent e) {   
    showPopupMenu(e);
   }
  });
  this.setLayout(new FlowLayout());
  this.setBounds(100, 100, 300, 300);
  this.setVisible(true);

 }

 private void showPopupMenu(MouseEvent e) {

  // 如果当前事件与右键菜单有关(单击右键),则弹出菜单
  if (e.isPopupTrigger()) {
   JPopupMenu pop = new JPopupMenu("id1");
   final String sid = ((JButton) e.getComponent()).getText();
   JMenuItem item1 = new JMenuItem("功能1");
   item1.addMouseListener(new MouseAdapter(){
    public void mouseReleased(MouseEvent e) {
     System.out.println(sid);
    }
   });
   pop.add(item1);
   //e.getComponent()表示与右键菜单关联的组件,这里指button2  
   pop.show(e.getComponent(), e.getX(), e.getY());
  }else{//如果是正常单击(左键)
   System.out.println("按到了");
  }
 }

 public static void main(String[] args) {

  new JPopupMenuTest();
 }
}

转载地址:http://puvta.baihongyu.com/

你可能感兴趣的文章
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>