package com.swing.demo; import java.awt.BorderLayout; import java.awt.Color; import java.awt.EventQueue; import java.awt.Image; import java.awt.Panel; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JPanel; import javax.swing.JToolBar; /** * 基于Java图像开放工具栏测试案例 * * @author Administrator * */ public class ToolBarTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable(){ public void run() { ToolBarFrame frame = new ToolBarFrame(); frame.setDefaultCloseOperation(3); frame.setVisible(true); } }); } } class ToolBarFrame extends JFrame{ public ToolBarFrame () { setTitle("ToolBarTest"); setSize(400,300); panel = new JPanel(); add(panel,BorderLayout.CENTER); /** * 事件对象,让菜单栏和工具条调用 */ Action blueAction = new ColorAction("Blue",new ImageIcon("111"),Color.BLUE); Action yellowAction = new ColorAction("Yellow", new ImageIcon("222"),Color.YELLOW); Action redAction = new ColorAction("Red",new ImageIcon("333"),Color.RED); //事件对象,让菜单栏和工具条退出 Action exitAction = new AbstractAction("Exit",new ImageIcon("exit.gif")){ public void actionPerformed(ActionEvent e) { System.exit(0); }}; exitAction.putValue(Action.SHORT_DESCRIPTION, "Exit"); /** * 工具条 */ JToolBar bar = new JToolBar(); bar.add(blueAction); bar.add(yellowAction); bar.add(redAction); bar.addSeparator(); bar.add(exitAction); add(bar,BorderLayout.NORTH); /*** * 菜单栏 */ JMenu menu = new JMenu("Color"); menu.add(yellowAction); menu.add(redAction); menu.add(blueAction); menu.add(exitAction); JMenuBar menuBar = new JMenuBar(); menuBar.add(menu); setJMenuBar(menuBar); } private JPanel panel ; class ColorAction extends AbstractAction { public ColorAction(String name,ImageIcon image,Color color){ putValue(Action.NAME,name); putValue(Action.SHORT_DESCRIPTION, name + " background"); //将颜色存放到KEY AND VALUE putValue("Color",color); } public void actionPerformed(ActionEvent e) { //取值根据KEY:Color Color c = (Color) getValue("Color"); panel.setBackground(c); } } }