Java JPopupMenu类(弹出式菜单)

创建弹出式菜单和创建菜单栏的步骤基本相似,只是在创建菜单栏时第一步创建的是JMenuBar类的对象,而创建弹出式菜单的第一步创建的是JPopupMenu类的对象,然后通过为需要弹出该菜单的组件添加鼠标事件监听器,在捕获弹出菜单事件时弹出该菜单。

import java.util.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyVetoException;
import java.net.*;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.tree.*;

public class t3 extends JFrame{

	private JLabel label = new JLabel("请在窗口中单击鼠标右键!");
	
	private JPopupMenu popupMenu = new JPopupMenu();// 创建弹出式菜单对象
	
	private JMenuItem cutItem = new JMenuItem("剪切");//创建菜单项
	private JMenuItem copyItem = new JMenuItem("复制");
	private JMenuItem pastItem = new JMenuItem("粘贴");
	
	private JMenu editMenu = new JMenu("编辑");///创建菜单对象
	private JMenuItem readItem = new JMenuItem("只读");
	private JMenuItem writeItem = new JMenuItem("可写");
	
	private JMenu fontMenu = new JMenu("字体");
	private JMenuItem boldfacedItem = new JMenuItem("加粗");
	private JMenuItem italicItem = new JMenuItem("斜体");
	
	public t3() {
		setTitle("选项卡面板");
		setBounds(400, 400, 400, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		cutItem.addActionListener(new ItemListener());
		copyItem.addActionListener(new ItemListener());
		pastItem.addActionListener(new ItemListener());
		readItem.addActionListener(new ItemListener());
		writeItem.addActionListener(new ItemListener());
		
		popupMenu.add(cutItem);
		popupMenu.add(copyItem);
		popupMenu.add(pastItem);
		popupMenu.add(editMenu);
		
		editMenu.add(readItem);
		editMenu.add(writeItem);
		editMenu.add(fontMenu);
		
		boldfacedItem.addActionListener(new ItemListener());
		fontMenu.add(boldfacedItem);
		
		italicItem.addActionListener(new ItemListener());
		fontMenu.add(italicItem);
		
		add(label);
		// 为窗体的顶层容器添加鼠标事件监听器
		addMouseListener(new MouseAdapter() {
			// 鼠标按键被释放时触发该方法
			public void mouseReleased(MouseEvent e) {
				// 判断此次鼠标事件是否为该组件的弹出菜单触发事件
				// 如果是则在释放鼠标的位置弹出菜单
				if (e.isPopupTrigger())
					popupMenu.show(e.getComponent(), e.getX(), e.getY());
			}
		});
		
		setVisible(true);
	}

	//事件监听器,用于输出所点击的菜单项的名称
	private class ItemListener implements ActionListener {
		
		public void actionPerformed(ActionEvent e) {
			
			JMenuItem menuItem = (JMenuItem) e.getSource();//获取所点击的菜单项 
			System.out.println("您单击的是菜单项:" + menuItem.getText());
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		t3 test = new t3();

	}

}

猜你喜欢

转载自blog.csdn.net/qq_36761831/article/details/81484216