共性action

来源:互联网 发布:数据流程图类型 编辑:程序博客网 时间:2024/06/01 19:01
package demo.event.swing;


import java.awt.Color;
import java.awt.Dimension;
import java.awt.Event;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;


import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.InputMap;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;


public class ActionTest {


public static void main(String[] args) {
new ActionJframe();
}
}


class ActionJframe extends JFrame {


public ActionJframe() {


this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setBounds((dim.width - 400) / 2, (dim.height - 400) / 2, 400, 400);
this.add(new JpanelAction());
this.setTitle("测试action");

}
}


class JpanelAction extends JPanel {

public JpanelAction() {
Action yellowAction=new ColorAction("YELLOW", new ImageIcon("F:\\ico\\3451\\1.ico"), Color.yellow);
Action blueAction=new ColorAction("BLUE", new ImageIcon("F:\\ico\\3451\\2.ico"), Color.blue);
Action redAction=new ColorAction("RED", new ImageIcon("F:\\ico\\3451\\3.ico"), Color.red);

this.add(new JButton(yellowAction));
this.add(new JButton(blueAction));
this.add(new JButton(redAction));


InputMap imap=getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
imap.put(KeyStroke.getKeyStroke(KeyEvent.VK_Y,Event.CTRL_MASK,true), "panel.yellow");
imap.put(KeyStroke.getKeyStroke("ctrl B"), "panel.blue");
imap.put(KeyStroke.getKeyStroke("ctrl R"), "panel.red");

ActionMap amap=getActionMap();
amap.put("panel.yellow", yellowAction);
amap.put("panel.blue", blueAction);
amap.put("panel.red", redAction);

}


class ColorAction extends AbstractAction {


public ColorAction(String name, Icon icon, Color color) {
putValue(Action.NAME, name);
putValue(Action.SMALL_ICON, icon);
putValue("color", color);
putValue(Action.SHORT_DESCRIPTION, "set panel color to "
+ name.toLowerCase());
}


public void actionPerformed(ActionEvent e) {


Color c = (Color) getValue("color");
setBackground(c);


}
}
}
原创粉丝点击