我在JPanel类中创建了一个KeyAdapter类,我尝试使用System.out.println(String par1)调试单击;
然而它似乎没有用......
这是班级:
package net.ryanshah;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class Menu extends JPanel
{
private GameFrame gf;
private Image bg = new ImageIcon("res/bg.png").getImage();
public Menu(final GameFrame parent) {
this.gf = parent;
int width = parent.getWidth();
int height = parent.getHeight();
setFocusable(true);
addKeyListener(new MenuOperator());
setBackground(Color.black);
setLayout(null);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
int w = getWidth();
int h = getHeight();
g2d.drawImage(bg, 0, 0, null);
}
public class MenuOperator extends KeyAdapter {
@Override
public void keyPressed(KeyEvent event) {
int keyCode = event.getKeyCode();
if(keyCode == KeyEvent.VK_SPACE) {
System.out.println("LOL");
}
}
}
}
有谁知道问题可能是什么?我已经在框架中设置了键处理程序,并将帧设置为可聚焦..
提前致谢
〜RyanS。
答案 0 :(得分:2)
ImageIcon
的构造函数,因为前者会通知您,以防出现问题。有关详细信息,请参阅Loading Image Icon Exception,以获取更多信息。KeyListeners
适用于AWT
,Swing
另一方面使用KeyBindings。JComponent
上设置背景更喜欢先将opaque
的{{1}}属性设置为JComponent
。由于true
属性通常取决于使用的opaque
。LookAndFeel
。请浏览Absolute Positioning的第一段以获取更多信息: - )setLayout(null)
。 @camickr撰写的此博客Motion Using the Keyboard将再次为您的知识添加负载,为什么ImageObserver
不被视为更好的选择以及为什么KeyListeners
更适合此类需求: - )
请看一下这个例子:
KeyBindings
答案 1 :(得分:0)
设置面板可调焦是不够的 - 面板无法专注于自己 - 你必须要求专注于某种事件。例如,您可以向面板添加鼠标侦听器,并在单击时调用panel.requestFocusInWindow()
。
如果您添加它的组件具有焦点,则关键侦听器将仅 。