我正在开发一个使用 JprogressBar 的应用程序,当我在做某事时,进度条正在运行。我还在那里添加了转义功能。当任何人点击键盘的 Escape 按钮时,焦点 Jpanel/Jdialog/JFrame 就会被释放。它工作正常。我的问题是 JprogressBar 没有停止。我想这样做,如果任何 Jpanel/Jdialog/JFrame 通过转义按钮关闭,那么如果它的父级有 JProgressBar,那么它应该被停止。我怎样才能做到这一点?所有Jpanel/Jdialog/JFrame的父级可以不一样吗?
我的逃生功能如上:
public static void setDisposeOnEsc(JComponent c, final Object promptControl) {
Action escape = new AbstractAction() {
{
putValue(NAME, "escape");
}
public void actionPerformed(ActionEvent e) {
JComponent source = (JComponent) e.getSource();
try {
Window window = SwingUtilities.getWindowAncestor(source);
window.dispose();
} catch (Exception ex) {
}
try {
Dialog dialog = (Dialog) source.getFocusCycleRootAncestor();
dialog.dispose();
} catch (Exception ex) {
}
try {
JFrame jFrame = (JFrame) source.getFocusCycleRootAncestor();
jFrame.dispose();
} catch (Exception ex) {
}
}
};
Object name = escape.getValue(Action.NAME);
c.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"),name);
c.getActionMap().put(name, escape);
}
我想这样做,如果通过上述方法处理的任何 Jpanel/Jdialog/JFrame,那么如果它的父级有 JprogressBar 并且正在运行,那么它应该被停止。
我的英语不太好,所以请忽略语法错误。
提前致谢。