java实战开发--右键弹出菜单

今天我们学习如何用java做出右键弹出菜单的效果,如下图所示:

这里我们可以通过右击,弹出菜单,通过点击某一菜单性,可以给窗体设置背景颜色。

---------------------------------------------------------------------------------------

step1:

任务描述:搭建界面窗口框架

编辑类:TestJPopupMenu.class

  
  
  
  
  1. package test; 
  2.  
  3. import java.awt.Color; 
  4.  
  5. import javax.swing.JFrame; 
  6.  
  7. public class TestJPopupMenu extends JFrame { 
  8.     public TestJPopupMenu() { 
  9.  
  10.         // 窗口的默认背景色为白色 
  11.         getContentPane().setColor.white); < /span>
  12.         // 设置窗口标题 
  13.         setTitle("右键弹出菜单"); 
  14.         // 设置窗口位置和大小。 
  15.         setBounds(200200400300); 
  16.         // 设置窗口为可视 
  17.         setVisible(true); 
  18.         // 关闭窗口时退出程序 
  19.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  20.     } 
  21.  
  22.     public static void main(String[] args) { 
  23.         new TestJPopupMenu(); 
  24.     } 

效果图:

---------------------------------------------------------------------------------------

step2:

任务描述:创建弹出菜单,并添加窗口的鼠标事件处理

编辑类:TestJPopupMenu.class

  
  
  
  
  1. package test; 
  2.  
  3. import java.awt.Color; 
  4. import java.awt.event.MouseAdapter; 
  5. import java.awt.event.MouseEvent; 
  6.  
  7. import javax.swing.JFrame; 
  8. import javax.swing.JPopupMenu; 
  9.  
  10. public class TestJPopupMenu extends JFrame { 
  11.     private JPopupMenu popupMenu; 
  12.  
  13.     public TestJPopupMenu() { 
  14.         popupMenu = new JPopupMenu(); // 实例化弹出菜单 
  15.         addMouseListener(new MouseAdapter() { // 窗口的鼠标事件处理 
  16.             public void mouseReleased(MouseEvent event) { // 释放鼠标 
  17.                 if (event.isPopupTrigger()) // 如果是弹出菜单事件(根据平台不同可能不同) 
  18.                     popupMenu.show(event.getComponent(), event.getX(), event 
  19.                             .getY()); // 显示菜单 
  20.             } 
  21.         }); 
  22.         // 窗口的默认背景色为白色 
  23.         getContentPane().setColor.white); < /span>
  24.         // 设置窗口标题 
  25.         setTitle("右键弹出菜单"); 
  26.         // 设置窗口位置和大小。 
  27.         setBounds(200200400300); 
  28.         // 设置窗口为可视 
  29.         setVisible(true); 
  30.         // 关闭窗口时退出程序 
  31.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  32.     } 
  33.  
  34.     public static void main(String[] args) { 
  35.         new TestJPopupMenu(); 
  36.     } 

右击窗口界面,有不是很明显的小点,或者用后台输出来判断代码生效。

效果图:

---------------------------------------------------------------------------------------

step3:

任务描述:创建弹出菜单中的菜单项,并把各菜单项添加到菜单中

编辑类:TestJPopupMenu.class

  
  
  
  
  1. package test; 
  2.  
  3. import java.awt.Color; 
  4. import java.awt.event.MouseAdapter; 
  5. import java.awt.event.MouseEvent; 
  6.  
  7. import javax.swing.JFrame; 
  8. import javax.swing.JMenuItem; 
  9. import javax.swing.JPopupMenu; 
  10.  
  11. public class TestJPopupMenu extends JFrame { 
  12.     private JPopupMenu popupMenu; 
  13.     /** 菜单项 **/ 
  14.     private JMenuItem items[]; 
  15.  
  16.     public TestJPopupMenu() { 
  17.         popupMenu = new JPopupMenu(); // 实例化弹出菜单 
  18.         String[] str = {"红色","绿色","蓝色","黄色","粉色"}; // 菜单项名称 
  19.         items = new JMenuItem[5]; // 创建5个菜单项 
  20.         for (int i = 0; i < items.length; i++) { 
  21.             items[i] = new JMenuItem(str[i]); // 实例化菜单项 
  22.             popupMenu.add(items[i]); // 将菜单项添加到菜单中 
  23.         } 
  24.         addMouseListener(new MouseAdapter() { // 窗口的鼠标事件处理 
  25.             public void mouseReleased(MouseEvent event) { // 释放鼠标 
  26.                 if (event.isPopupTrigger()) // 如果是弹出菜单事件(根据平台不同可能不同) 
  27.                     // 显示菜单 
  28.                     popupMenu.show(event.getComponent(), event.getX(), event.getY());  
  29.             } 
  30.         }); 
  31.         // 窗口的默认背景色为白色 
  32.         getContentPane().setColor.white); < /span>
  33.         // 设置窗口标题 
  34.         setTitle("右键弹出菜单"); 
  35.         // 设置窗口位置和大小。 
  36.         setBounds(200200400300); 
  37.         // 设置窗口为可视 
  38.         setVisible(true); 
  39.         // 关闭窗口时退出程序 
  40.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  41.     } 
  42.  
  43.     public static void main(String[] args) { 
  44.         new TestJPopupMenu(); 
  45.     } 

效果图:

---------------------------------------------------------------------------------------

 

step4:

任务描述:为各菜单项添加监听:点击相应选项可以设置相应背景色

编辑类:TestJPopupMenu.class

  
  
  
  
  1. package test; 
  2.  
  3. import java.awt.Color; 
  4. import java.awt.event.ActionEvent; 
  5. import java.awt.event.ActionListener; 
  6. import java.awt.event.MouseAdapter; 
  7. import java.awt.event.MouseEvent; 
  8.  
  9. import javax.swing.JFrame; 
  10. import javax.swing.JMenuItem; 
  11. import javax.swing.JPopupMenu; 
  12.  
  13. public class TestJPopupMenu extends JFrame { 
  14.     private JPopupMenu popupMenu; 
  15.     /** 菜单项 **/ 
  16.     private JMenuItem items[]; 
  17.  
  18.     Color[] colors = { Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW, 
  19.             Color.PINK }; // 背景颜色集 
  20.  
  21.     public TestJPopupMenu() { 
  22.         popupMenu = new JPopupMenu(); // 实例化弹出菜单 
  23.         String[] str = { "红色""绿色""蓝色""黄色""粉色" }; // 菜单项名称 
  24.         items = new JMenuItem[5]; // 创建5个菜单项 
  25.         MenuItemMonitor menuItemMonitor = new MenuItemMonitor(); 
  26.         for (int i = 0; i < items.length; i++) { 
  27.             items[i] = new JMenuItem(str[i]); // 实例化菜单项 
  28.             popupMenu.add(items[i]); // 将菜单项添加到菜单中 
  29.             // 设置ActionCommand,方便我们获取下标 
  30.             items[i].setActionCommand(i + ""); 
  31.             // 为各菜单项设置监听 
  32.             items[i].addActionListener(menuItemMonitor); 
  33.         } 
  34.         addMouseListener(new MouseAdapter() { // 窗口的鼠标事件处理 
  35.             public void mouseReleased(MouseEvent event) { // 释放鼠标 
  36.                 if (event.isPopupTrigger()) // 如果是弹出菜单事件(根据平台不同可能不同) 
  37.                     // 显示菜单 
  38.                     popupMenu.show(event.getComponent(), event.getX(), event 
  39.                             .getY()); 
  40.             } 
  41.         }); 
  42.         // 窗口的默认背景色为白色 
  43.         getContentPane().setColor.white); < /span>
  44.         // 设置窗口标题 
  45.         setTitle("右键弹出菜单"); 
  46.         // 设置窗口位置和大小。 
  47.         setBounds(200200400300); 
  48.         // 设置窗口为可视 
  49.         setVisible(true); 
  50.         // 关闭窗口时退出程序 
  51.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  52.     } 
  53.  
  54.     private class MenuItemMonitor implements ActionListener { 
  55.  
  56.         @Override 
  57.         public void actionPerformed(ActionEvent event) { 
  58.             // 获取String格式的ActionCommand 
  59.             String strIndex = ((JMenuItem) event.getSource()) 
  60.                     .getActionCommand(); 
  61.             // 将上面取到的String格式的内容变为int类型作为取颜色的下标 
  62.             int niIndex = Integer.parseInt(strIndex); 
  63.             // 设置背景色为对应下标的颜色 
  64.             getContentPane().setcolors[niIndex]); < /span>
  65.         } 
  66.     } 
  67.  
  68.     public static void main(String[] args) { 
  69.         new TestJPopupMenu(); 
  70.     } 

效果图:

---------------------------------------------------------------------------------------

这样,我们就完成了最终想要的效果,需要说明的是,JMenuItem有三个子类:JCheckBoxMenuItem, JMenu, JRadioButtonMenuItem,这里的JMenuItem可以用它的这三个子类来替换,用于完成不同样式的菜单项,这里我们看下JRadioButtonMenuItem的效果如下图:

 

 

 

你可能感兴趣的:(jpopupmenu,右键弹出菜单,JMenuItem)