当一个对话框处于激活状态时,当安下ESC键时,对话框dispose或Hide。
这该如何实现呢?
我试图用键绑定的方式来让ESC键和一个退出行为的Action绑定。
dialog.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).
put(KeyStroke.getKeyStroke("esc"),"disposeDialog");
dialog.getActionMap().put("disposeDialog",disposeAction);
但是当dialog处于激活状态时我按下ESC键,此时disposeAction并没有被使用大家觉得我应该怎么做呢?
麻烦大家看看该怎样做才对呢?
上面的代码问题在哪儿 呢?
谢谢!
这该如何实现呢?
我试图用键绑定的方式来让ESC键和一个退出行为的Action绑定。
dialog.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).
put(KeyStroke.getKeyStroke("esc"),"disposeDialog");
dialog.getActionMap().put("disposeDialog",disposeAction);
但是当dialog处于激活状态时我按下ESC键,此时disposeAction并没有被使用大家觉得我应该怎么做呢?
麻烦大家看看该怎样做才对呢?
上面的代码问题在哪儿 呢?
谢谢!
解决方案 »
- 谁提供一个mysql的下载地址``
- 跪求JAVA版的StringResolution.cpp,附C源代码
- 好奇怪,jpanel没办法响应鍵盘事件!!!!!!大家请进
- 在linux上怎么用java连接mysql??
- 为什么我用BufferedImage不能显示出图像呢,程序错在哪里嘞,在线等,谢谢
- 征求一算法,关于从数据库中得到数据显示问题(在线等待,解决立即给分!不难)
- 使用 Factory 与不使用Factory 有何不同?
- 为什么查询结果必须按顺序获得结果???????
- tooltip怎么折行呀?
- 日期大小比较
- 怎样用jsp把word表格的数据读如oracle数据库,各位大虾指点
- 请教用ArrayList存数据的问题。
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==e.VK_ESCAPE){
dispose();
System.exit(0);}
}
});
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;import javax.swing.*;public class T {
public static void main(String args[]) {
final JFrame f = new JFrame();
JButton btn = new JButton(new AbstractAction() {
{ putValue(NAME, "ShowDialog"); } public void actionPerformed(ActionEvent e) {
final JDialog dialog = new JDialog(f, "Dialog", true);
AbstractAction disposeAction = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
dialog.dispose();
}
};
JPanel contentPane = (JPanel) dialog.getContentPane();
contentPane.setFocusable(true);
contentPane.add(new JButton("Hello"));
contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).
put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),"disposeDialog");
contentPane.getActionMap().put("disposeDialog", disposeAction);
dialog.setSize(100, 100);
dialog.setLocationRelativeTo(f);
dialog.setVisible(true);
dialog.dispose();
}
});
f.getContentPane().add(btn, BorderLayout.CENTER);
//f.setSize(800, 600);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}