Мой апплет никогда не фокусируется. Я запускаю его в затмении, или бросаю на своем веб-сервере, так или иначе, он никогда не фокусируется.
Я бы понял, если мой механизм рисования не работал, так как я написал это, и я все еще работаю над изломами в нем. Но у меня есть отладочное сообщение, которое должно срабатывать при нажатии клавиши, и отладочное сообщение, которое должно срабатывать при получении фокуса. Ни разу не стрелял.
Это отображает контекст, хотя. Он просто генерирует несколько случайных картинок и отображает их.
Что мне нужно сделать, чтобы сосредоточиться и получить ключевые события?
Вот класс. Он был слегка урезан, но незначительно.
public class ClientMain extends Applet implements KeyListener, FocusListener {
private Image offscreen;
private Image primary; // the main view screen
private ClientContext context;
public void init() {
setSize(800,600);
setFocusable(true);
offscreen = createImage(800, 600);
primary = createImage(530,450);
// for testing purposes. This just creates a random context
context = ClientContext.generateRandomContext();
}
public void paint(Graphics g) {
Graphics buffer = offscreen.getGraphics();
buffer.clearRect(0,0,getWidth(),getHeight());
drawPrimary();
g.drawImage(offscreen, 0, 0, this);
}
private void drawPrimary() {
Graphics g = primary.getGraphics();
int w = primary.getWidth(null);
int h = primary.getHeight(null);
System.out.println("primary: " + w + " " + h);
context.drawPrimary(g,w,h);
offscreen.getGraphics().drawImage(primary,150,0,this);
}
public void update() {
repaint();
}
public void mouseMoved(MouseEvent e) {
repaint();
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("Key Pressed: " + e.getKeyCode());
switch(e.getKeyCode()) {
case KeyEvent.VK_UP: context.up(); break;
case KeyEvent.VK_DOWN: context.down(); break;
case KeyEvent.VK_LEFT: context.left(); break;
case KeyEvent.VK_RIGHT: context.right(); break;
}
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void focusGained(FocusEvent e) {
System.out.println("got focus");
}
@Override
public void focusLost(FocusEvent e) {
System.out.println("lost focus");
}
}