Action配置方法
来源:互联网 发布:asp商城源码 编辑:程序博客网 时间:2024/06/16 22:57
这些protected方法完成了支持Action的大多数工作,希望使用Action更改其行为的的子类应该覆盖这些方法。
protected PropertyChangeListener createActionPropertyChangeListener(Action a)
返回将负责重新配置按钮以响应按钮action中发生的变化的PropertyChangeListener。
protected void configurePropertiesFromAction(Action a)
有几个属性值来自给定的Action,并且被应用到这个按钮中。下表列出了这些专用属性,AbstractAction的具体子类可以并且确实是从这个列表中添加和删除的。
按钮属性
从Action中获得的值
Action为null时的属性值
Text
a.getValue(NAME)
Null
icon
a.getValue(SMALL_ICON)
Null
Mnemonic
a.getValue(MNEMONIC_KEY)
KeyEvent.VK_UNDEFINED
toolTipText
a.getValue(SHORT_DESCRIPTION)
Mull
actionCommand
a.getValue(ACTION_COMMAND_KEY)
Null
Enabled
a.isEnabled()
true
JButton构造函数:
public JButton(Action a)
建立一个包含来自指定Action的属性值(参见上表)的按钮,注册该Action,以便接受按钮触发的ActionEvent,将按钮注册为Action的ChangeListener。该按钮适应对Action进行的任何更进一步的更改。这等同于实例了一个包含默认构造函数JButton,然后调用其setAction()方法。
以下为一个学习应用的例子:
// ActionExample.java
// An application that shows the Action class in, well, action.
//
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ActionExample extends JFrame {
public static final int MIN_CHANNEL = 2;
public static final int MAX_CHANNEL = 13;
private int currentChannel = MIN_CHANNEL;
private int favoriteChannel = 9;
private JLabel channelLabel = new JLabel();
private Action upAction = new UpAction();//new的是谁就调用谁的构造函数对定义的对象实例化
private Action downAction = new DownAction();
private GotoFavoriteAction gotoFavoriteAction = new GotoFavoriteAction();
private Action setFavoriteAction = new SetFavoriteAction();
public class UpAction extends AbstractAction { //必须为AbstractAction,不能是Action
public UpAction() { //构造函数....
putValue(NAME, "Channel Up"); //putValue(String key, Object value)
putValue(SMALL_ICON, new ImageIcon("images/up.gif"));//使用关联的键设置此对象的一个属性
putValue(SHORT_DESCRIPTION, "Increment the channel number");
putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_U));//把new Integer去掉,效果没变,
} //不过还是应该加上
public void actionPerformed(ActionEvent ae) {
setChannel(currentChannel+1);
}
}
public class DownAction extends AbstractAction {
public DownAction() {
putValue(NAME, "Channel Down");
putValue(SMALL_ICON, new ImageIcon("images/down.gif"));
putValue(SHORT_DESCRIPTION, "Decrement the channel number");
putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_D));
}
public void actionPerformed(ActionEvent ae) {
setChannel(currentChannel-1);
}
}
public class GotoFavoriteAction extends AbstractAction {
public GotoFavoriteAction() {
putValue(SMALL_ICON, new ImageIcon("images/fav.gif"));
putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_G));
updateProperties();
}
public void updateProperties() {
putValue(NAME, "Go to channel "+favoriteChannel);
putValue(SHORT_DESCRIPTION, "Change the channel to "+favoriteChannel);
}
public void actionPerformed(ActionEvent ae) {
setChannel(favoriteChannel);
}
}
public class SetFavoriteAction extends AbstractAction {
public SetFavoriteAction() {
putValue(NAME, "Set 'Go to' channel");
putValue(SMALL_ICON, new ImageIcon("images/set.gif"));
putValue(SHORT_DESCRIPTION,"Make current channel the Favorite channel");
putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_S));
}
public void actionPerformed(ActionEvent ae) {
favoriteChannel = currentChannel;
gotoFavoriteAction.updateProperties();
setEnabled(false);
gotoFavoriteAction.setEnabled(false);
}
}
public ActionExample() {
super("ActionExample");
setChannel(currentChannel); // enable/disable the Actions as appropriate
channelLabel.setHorizontalAlignment(JLabel.CENTER);
channelLabel.setFont(new Font("Serif", Font.PLAIN, 32));
getContentPane().add(channelLabel, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel(new GridLayout(2, 2, 16, 6));
buttonPanel.setBorder(BorderFactory.createEmptyBorder(6, 16, 16, 16));
getContentPane().add(buttonPanel, BorderLayout.CENTER);
buttonPanel.add(new JButton(upAction));
buttonPanel.add(new JButton(gotoFavoriteAction));
buttonPanel.add(new JButton(downAction));
buttonPanel.add(new JButton(setFavoriteAction));
JMenuBar mb = new JMenuBar();
JMenu menu = new JMenu("Channel");
menu.add(new JMenuItem(upAction));
menu.add(new JMenuItem(downAction));
menu.addSeparator(); //分隔线
menu.add(new JMenuItem(gotoFavoriteAction));
menu.add(new JMenuItem(setFavoriteAction));
mb.add(menu);
setJMenuBar(mb);
}
public void setChannel(int chan) {
currentChannel = chan;
channelLabel.setText("Now tuned to channel: "+currentChannel);
// enable/disable the Actions as appropriate
downAction.setEnabled(currentChannel > MIN_CHANNEL);
upAction.setEnabled(currentChannel < MAX_CHANNEL);
gotoFavoriteAction.setEnabled(currentChannel != favoriteChannel);
setFavoriteAction.setEnabled(currentChannel != favoriteChannel);
}
public static void main(String argv[]) { //args==argv!!!
JFrame f = new ActionExample();
f.setSize(400, 180);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
- struts2 action 配置方法
- Action配置方法
- Struts2 action配置方法
- struts2 action 配置方法
- strts2 action配置方法
- struts2 action跳转action 的配置方法
- Struts2的action配置方法
- struts action的4种配置方法
- struts2 action 配置方法 &&struts2的配置文件
- struts2 action跨包跳转配置方法
- Struts配置之action属性set-property的配置方法
- Struts配置之action属性set-property的配置方法
- Selvet动态配置Action方法的三种方法
- 配置action
- Action配置
- 配置Action
- 配置Action
- 浅析如何让Spring 来管理Action的配置方法
- Remedy7.5学习笔记3
- 嵌入式linux的中断函数实现和分析(一)
- 深入浅出MFC笔记——第一章
- JAVA相关基础知识
- LM358 双运算放大器电路的典型应用
- Action配置方法
- 设计心得
- 加密的存储过程解密
- 如何选择棋牌游戏开发公司为合作商
- [J2ME]手机唯一标识
- 广域网加速解决方案
- delphi 内存管理,定期释放
- zend studio 7.1.1注册码及汉化包下载
- 页面缓存