Java 使用键盘关闭JFrame

Java 使用键盘关闭JFrame,java,swing,java-7,keylistener,Java,Swing,Java 7,Keylistener,我正在为一个大学小项目创建一个基本的屏幕保护程序,在打开JFrame后,我很难关闭它。我已经移除了外部面板,以使其看起来像一个合适的屏幕保护程序,但我现在必须打开任务管理器来关闭程序,我希望当我按下键盘上的按钮时窗口关闭,我如何才能做到这一点? 提前谢谢 -------编辑-------- 我已经尝试了前面给出的两种方法,但似乎无法使它们正常工作。以下是迄今为止我的框架代码: import java.awt.Color; import javax.swing.JFrame; pu

我正在为一个大学小项目创建一个基本的屏幕保护程序,在打开JFrame后,我很难关闭它。我已经移除了外部面板,以使其看起来像一个合适的屏幕保护程序,但我现在必须打开任务管理器来关闭程序,我希望当我按下键盘上的按钮时窗口关闭,我如何才能做到这一点? 提前谢谢

-------编辑--------

我已经尝试了前面给出的两种方法,但似乎无法使它们正常工作。以下是迄今为止我的框架代码:

import java.awt.Color;    
import javax.swing.JFrame;    
public class ScreensaverTest

{      
 public static void main( String[] args )       
{          
   JFrame frame = new JFrame( "Screen Saver" );
   frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
   frame.setUndecorated(true);
   ScreenSaverJPanel screensaverTestJPanel = new ScreenSaverJPanel();
   frame.add( screensaverTestJPanel );
   frame.setBackground( Color.BLACK );
   frame.setVisible( true );
   frame.setLocation( 0, 0 );
   frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
   }    
}
--------编辑---------


另外,我使用重绘方法在屏幕上移动对象,我希望其中一些对象以不同的速度移动。我正在使用随机数生成器进行定位,因此调整数字并不是一个真正的选项,请帮助。

有很多关于如何进行此操作的示例

您需要向侦听键盘输入的帧添加eventListener,然后关闭该帧。 试着看看这个:

你必须用一些东西来代替这个活动,但我认为这是最好的方式

编辑:

要响应帖子中的编辑,您可以执行以下操作:

import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class Test {

    public Test() {
        final JFrame frame = new JFrame("Screen Saver");
        frame.validate();
        frame.setVisible(true);

        KeyAdapter listener = new KeyAdapter() {
            @Override public void keyPressed(KeyEvent e) {
                frame.dispose();
            }
        };

        frame.addKeyListener(listener);
    }

    public static void main(String[] args) {
        new Test();
    }

}

瞧,这应该行得通。它在Java 7上为我编译。

有很多关于如何编译的示例

您需要向侦听键盘输入的帧添加eventListener,然后关闭该帧。 试着看看这个:

你必须用一些东西来代替这个活动,但我认为这是最好的方式

编辑:

要响应帖子中的编辑,您可以执行以下操作:

import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class Test {

    public Test() {
        final JFrame frame = new JFrame("Screen Saver");
        frame.validate();
        frame.setVisible(true);

        KeyAdapter listener = new KeyAdapter() {
            @Override public void keyPressed(KeyEvent e) {
                frame.dispose();
            }
        };

        frame.addKeyListener(listener);
    }

    public static void main(String[] args) {
        new Test();
    }

}

瞧,这应该行得通。它在Java 7上为我编译。

如果您只有一个JFrame,下面是代码。您应该在初始化组件时添加它

addKeyListener(new KeyAdapter()
    {
        @Override
        public void keyPressed(java.awt.event.KeyEvent evt)
        {
            processWindowEvent(new WindowEvent(getWindows()[0], WindowEvent.WINDOW_CLOSING));
        }
    });

如果您只有一个JFrame,下面是代码。您应该在初始化组件时添加它

addKeyListener(new KeyAdapter()
    {
        @Override
        public void keyPressed(java.awt.event.KeyEvent evt)
        {
            processWindowEvent(new WindowEvent(getWindows()[0], WindowEvent.WINDOW_CLOSING));
        }
    });

只要创建一个KeyListener并在发生此事件时关闭该程序。只要创建一个KeyListener并在发生此事件时关闭该程序。感谢到目前为止的帮助,但当我输入给定的代码并添加导入和实现EventListener时,我在addEventListener的代码最后一行仍然会出现错误“找不到符号”我也不知道怎么回事,请帮忙。嗯。。好的。我的代码有很多错误。对不起!我将使用一个工作示例进行更新。感谢到目前为止的帮助,但是当我输入给定的代码并添加导入和实现EventListener时,我仍然在addEventListener的代码最后一行出现错误,说“找不到符号”,我无法找出错误的地方,请提供帮助。嗯。。好的。我的代码有很多错误。对不起!我将更新一个工作示例。