19.菜单
效果:
package com.lvshitech.gui; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class JMenuDemo extends JFrame implements ActionListener { JLabel jl = new JLabel("请选择菜单:", JLabel.CENTER); JMenuItem aaMenuItem, baMenuItem; public JMenuDemo() { super("使用JMenu"); Container container = getContentPane(); // 创建MenuBar JMenuBar aMenuBar = new JMenuBar(); Icon appleIcon = new ImageIcon("images/apple.jpg"); Icon bananaIcon = new ImageIcon("images/banana.jpg"); Icon catIcon = new ImageIcon("images/cat.jpg"); Icon dogIcon = new ImageIcon("images/dog.jpg"); // 创建Menu JMenu aMenu = new JMenu("水果"); JMenu bMenu = new JMenu("动物"); aMenu.addSeparator(); // 创建Menu子菜单 JMenuItem aaMenuItem = new JMenuItem("苹果", appleIcon); JMenuItem abMenuItem = new JMenuItem("香蕉", bananaIcon); JMenuItem baMenuItem = new JMenuItem("小猫", catIcon); JMenuItem bbMenuItem = new JMenuItem("小狗", dogIcon); // 各子菜单项的触发事件 aaMenuItem.addActionListener(this); abMenuItem.addActionListener(this); baMenuItem.addActionListener(this); bbMenuItem.addActionListener(this); // 添加到Menu aMenu.add(aaMenuItem); aMenu.add(abMenuItem); bMenu.add(baMenuItem); bMenu.add(bbMenuItem); // 整体添加到MenuBar aMenuBar.add(aMenu); aMenuBar.add(bMenu); aMenuBar.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); jl.setBorder(BorderFactory.createEmptyBorder(20, 3, 20, 3)); container.add(aMenuBar); container.add(jl, BorderLayout.SOUTH); } // 监听器接口实现 @Override public void actionPerformed(ActionEvent e) { JMenuItem item = (JMenuItem) e.getSource(); jl.setText("选择了菜单:" + item.getText()); jl.setHorizontalAlignment(JLabel.CENTER); } public static void main(String[] args) { JFrame frame = new JMenuDemo(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }