JPopupMenu的使用以及JPopupMenu中子組件的事件處理


方法一:

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();
 }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM