我正在尝试KeyListener为我实现一个JFrame.在构造函数上,我正在使用此代码:
System.out.println("test");
addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) { System.out.println( "tester"); }
public void keyReleased(KeyEvent e) { System.out.println("2test2"); }
public void keyTyped(KeyEvent e) { System.out.println("3test3"); }
});
Run Code Online (Sandbox Code Playgroud)
当我运行它时,test消息出现在我的控制台中.但是,当我按下一个键时,我没有收到任何其他消息,就好像它KeyListener甚至没有.
我当时认为这可能是因为焦点不在于JFrame
,所以他们KeyListener没有收到任何事件.但是,我很确定它是.
有什么东西我错过了吗?
我想在JPanel中画一条线.这是我的GUI,我希望JPanel中的一行是白色的.

我找到很多例子,但问题是如何使用它.
在许多例子中,他们总是画一个从JPanel扩展的JFrame.
我想将面板添加到框架中并添加一些按钮以在多个方向上绘制线条,并使用中心的X按钮来清洁JPanel.
这是界面的代码:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class circuit extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
circuit frame = new circuit();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public …Run Code Online (Sandbox Code Playgroud) 在被动渲染模式中,可以使用KeyListener和ActionListener接口来处理来自用户的事件.
全屏模式下事件处理的正确方法是什么?请扩展此骨架,提供鼠标点击和按键事件的实现,请不要膨胀您的示例(示例启动全屏独占模式,使用Timer更新窗口中的图形):
import java.applet.Applet;
import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;
import javax.swing.Timer;
public class applet extends Applet
{
Timer timer;
JFrame frame;
DisplayMode[] displayModes = new DisplayMode[] {
new DisplayMode(1280, 800, 32, 60)
};
BufferStrategy bufferStrategy;
Rectangle bounds;
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param args
*/
public void init()
{
GraphicsEnvironment …Run Code Online (Sandbox Code Playgroud) 我开始学习java编程,我认为通过游戏开发学习java很酷.我知道如何绘制图像并听取按键然后移动该图像.但是当窗口正在聆听按键时,是否可以使图像前后移动到窗口?例如,当图像或物体(如宇宙飞船)在窗口中从左向右移动时,如果我按空格键,激光将在屏幕底部闪光(酷吧:D).但基本上我只想知道如何在窗口正在聆听按键时让图像从左向右移动.
我想我会在我的窗口添加一个关键监听器,然后触发一个无限循环来移动图像.或者我是否需要了解线程以便另一个线程移动对象?
请指教.
非常感谢.
我有一些我需要修改的代码.在代码中,原作者用于KeyStroke.getKeyStroke获取用户输入.例如,在此代码中,他使用a而不是左箭头.
我想改变这个,但我不知道怎么做.
这是原始代码:
registerKeyboardAction(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
tick(RIGHT);
}
}, "right", KeyStroke.getKeyStroke('d'), WHEN_IN_FOCUSED_WINDOW
);
Run Code Online (Sandbox Code Playgroud)
我必须把它改成这样的东西,但是当它运行时,它不起作用:
KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT);
KeyStroke.getKeyStroke("RIGHT");
java ×5
swing ×5
animation ×1
fullscreen ×1
graphics ×1
jframe ×1
jpanel ×1
key-bindings ×1
keyboard ×1
keylistener ×1
keystroke ×1
line ×1
mouse ×1