62,614
社区成员
发帖
与我相关
我的任务
分享
package com.ricky.www;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.MouseAdapter;
//import java.awt.event.MouseListener;
public class Test {
public static void main(String[] args){
JPopMenuDemo.main(args);
}
public static class JPopMenuDemo extends JFrame {
private static final long serialVersionUID = 1L;
JRadioButtonMenuItem items[];// 菜单项
Color[] colors = { Color.blue, Color.pink, Color.yellow, Color.red, Color.orange };
// 颜色组
JPopupMenu popupMenu;// 弹出菜单
public JPopMenuDemo() {
super("右键弹出菜单");// 调用父类构造函数
ChangeColorAction action = new ChangeColorAction();// 菜单项处理事件
String[] str = { "Blue", "Pink", "Yellow", "Red", "Orange" };// 菜单项名称
ButtonGroup colorGroup = new ButtonGroup();// 实例化按钮组
popupMenu = new JPopupMenu();// 实例化弹出菜单
items = new JRadioButtonMenuItem[5];// 初始化数组
for (int i = 0; i < items.length; i++) {
items[i] = new JRadioButtonMenuItem(str[i]);// 实例化菜单项
popupMenu.add(items[i]);// 增加菜单项到菜单上
colorGroup.add(items[i]);// 增加菜单项到按钮
items[i].addActionListener(action);
}
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent event) {
triggerEvent(event);
}
public void mouseReleased(MouseEvent event) {
triggerEvent(event);
}
private void triggerEvent(MouseEvent event) {
if (event.isPopupTrigger())
popupMenu.show(event.getComponent(), event.getX(), event.getY());
}
});
getContentPane().setBackground(Color.white);// 窗口的默认背景色为白色
setSize(230, 160);// 设置窗口大小
setVisible(true);// 设置窗口可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭窗口时退出程序
}
class ChangeColorAction implements ActionListener {// 菜单项事件处理
public void actionPerformed(ActionEvent event) {
for (int i = 0; i < items.length; i++)
if (event.getSource() == items[i]) {// 判断事件来自于哪个菜单项
getContentPane().setBackground(colors[i]);// 设置窗口背景
repaint();// 重绘窗口
return;
}
}
}
public static void main(String[] args) {
new JPopMenuDemo();
}
}
}