如何通过按转义键关闭 JInternalFrame?
How to close JInternalFrame by pressing escape key?
我用 JDesktopPane
创建了一个 JFrame
,我在其中调用 JInternalFrame
。现在我想通过按转义键关闭那个内部框架。
试了2-3种方法,都没有输出
我使用下面给出的代码做到了这一点:
public static void closeWindow(JInternalFrame ji){
ActionListener close=New ActionListener(){
public void actionPerformed(ActionEvent e){
ji.dispose();
}
};
当我通过提供其对象从实习生框架 class 构造函数调用上述方法时,我能够关闭它。但是当我在那里向构造函数写入一些其他代码行时。上面的方法调用不起作用。请帮我。我无法在代码中找到问题。
- 我还尝试将
KeyListener
添加到内部框架,这样我就可以使用击键,但它也不起作用。
我再次尝试 setMnemonic
按钮作为转义按钮,如下所示:
jButton1.setMnemonic(KeyEvent.VK_ESCAPE);
但也没有输出。
您需要实现KeyListener 接口,或者添加一个Anonymous 接口。在这个例子中,我只是实现了它。
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class JInternalFrame extends JFrame implements KeyListener {
public JInternalFrame()
{
super();
// other stuff to add to frame
this.setSize(400, 400);
this.setVisible(true);
this.addKeyListener( this );
}
@Override
public void keyTyped(KeyEvent e) {
// Don't need to implement this
}
@Override
public void keyPressed(KeyEvent e) {
if( e.getKeyCode() == KeyEvent.VK_ESCAPE ) {
System.exit(0); //Change this to dispose or whatever you want to do with the frame
}
}
@Override
public void keyReleased(KeyEvent e) {
//Dont need to implement anything here
}
public static void main(String[] args)
{
JInternalFrame frame = new JInternalFrame();
}
}
现在,如果这是如上所述的内部 jframe,最好在 JDesktopPane 中实现 keylistener 并在按下 escape 后调用 JInternalFrame 上的 dispose 方法,而不是在此框架中实现 keylistener。这完全取决于哪个 GUI 组件具有输入焦点。
我用 JDesktopPane
创建了一个 JFrame
,我在其中调用 JInternalFrame
。现在我想通过按转义键关闭那个内部框架。
试了2-3种方法,都没有输出
我使用下面给出的代码做到了这一点:
public static void closeWindow(JInternalFrame ji){ ActionListener close=New ActionListener(){ public void actionPerformed(ActionEvent e){ ji.dispose(); } };
当我通过提供其对象从实习生框架 class 构造函数调用上述方法时,我能够关闭它。但是当我在那里向构造函数写入一些其他代码行时。上面的方法调用不起作用。请帮我。我无法在代码中找到问题。
- 我还尝试将
KeyListener
添加到内部框架,这样我就可以使用击键,但它也不起作用。 我再次尝试
setMnemonic
按钮作为转义按钮,如下所示:jButton1.setMnemonic(KeyEvent.VK_ESCAPE);
但也没有输出。
您需要实现KeyListener 接口,或者添加一个Anonymous 接口。在这个例子中,我只是实现了它。
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class JInternalFrame extends JFrame implements KeyListener {
public JInternalFrame()
{
super();
// other stuff to add to frame
this.setSize(400, 400);
this.setVisible(true);
this.addKeyListener( this );
}
@Override
public void keyTyped(KeyEvent e) {
// Don't need to implement this
}
@Override
public void keyPressed(KeyEvent e) {
if( e.getKeyCode() == KeyEvent.VK_ESCAPE ) {
System.exit(0); //Change this to dispose or whatever you want to do with the frame
}
}
@Override
public void keyReleased(KeyEvent e) {
//Dont need to implement anything here
}
public static void main(String[] args)
{
JInternalFrame frame = new JInternalFrame();
}
}
现在,如果这是如上所述的内部 jframe,最好在 JDesktopPane 中实现 keylistener 并在按下 escape 后调用 JInternalFrame 上的 dispose 方法,而不是在此框架中实现 keylistener。这完全取决于哪个 GUI 组件具有输入焦点。