我做了一个jframe窗口,里面有jtable,jlist等各类组件,jtable里面因为要编辑一些东西,所以设了ctrl+s等快捷键来保存修改。但我设到jframe的getContentPane不好用:public void concreteShortcut(String key,Action action){
JPanel panel = (JPanel) this.getContentPane();
InputMap imap= panel.getInputMap();
ActionMap amap=panel.getActionMap();
String mapKey = new Random().nextInt()+"";
imap.put(KeyStroke.getKeyStroke(key),mapKey);
amap.put(mapKey,action);
}这个窗口没有把所有的组件放到一个新new的JPanel,然后再getContentPane.add(panel),而是直接getContentPane().add各种组件,难道和这个有关系?我看了核心技术里的例子,他是把新创建的一个jpanel(里面放置各种组件)添加到contentpane里。越用越感觉swing难用。
JPanel panel = (JPanel) this.getContentPane();
InputMap imap= panel.getInputMap();
ActionMap amap=panel.getActionMap();
String mapKey = new Random().nextInt()+"";
imap.put(KeyStroke.getKeyStroke(key),mapKey);
amap.put(mapKey,action);
}这个窗口没有把所有的组件放到一个新new的JPanel,然后再getContentPane.add(panel),而是直接getContentPane().add各种组件,难道和这个有关系?我看了核心技术里的例子,他是把新创建的一个jpanel(里面放置各种组件)添加到contentpane里。越用越感觉swing难用。
楼主【fxbird】截止到2008-07-09 09:41:24的历史汇总数据(不包括此帖):
发帖的总数量:125 发帖的总分数:3968 每贴平均分数:31
回帖的总数量:1028 得分贴总数量:285 回帖的得分率:27%
结贴的总数量:116 结贴的总分数:3758
无满意结贴数:10 无满意结贴分:380
未结的帖子数:9 未结的总分数:210
结贴的百分比:92.80 % 结分的百分比:94.71 %
无满意结贴率:8.62 % 无满意结分率:10.11 %
值得尊敬
this.getContentPane().requestFocus();
/**
* 为RootPaneContainer组件添加键盘事件
* @param rpc RootPaneContainer组件
* @param action 需要执行的动作
* @param keyName 键的名称
* @param keyCode 键的数字代码
* @param modifiers 任意修饰符的按位或组合
*/
public static void registerKeyEvent(RootPaneContainer rpc, Action action, String keyName, int keyCode, int modifiers)
{
JRootPane rp = rpc.getRootPane();
InputMap inputMap = rp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(KeyStroke.getKeyStroke(keyCode, modifiers), keyName);
rp.getActionMap().put(keyName, action);
}
用法 Action action = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("Do something...");
}
}; registerKeyEvent(jframe, action, "随便什么都行,只要不重复", KeyEvent.VK_S, KeyEvent.CTRL_MASK);
一个助记符必须对应键盘上的一个键,并且应该使用 java.awt.event.KeyEvent 中定义的 VK_XXX 键代码之一指定。助记符是不区分大小写的,所以具有相应键代码的键事件将造成按钮被激活,不管是否按下 Shift 修饰符。 如果在按钮的标签字符串中发现由助记符定义的字符,则第一个出现的助记符将是带下划线的,以向用户指示该助记符。
api里的