Java:
package snake.gui;
import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import toolkit.gui.BasicFrame;
public class MainWnd extends BasicFrame implements KeyListener, ChangeListener {
private Canvas canvas;
private int dt = 75;
public MainWnd() {
super();
init();
addSlider();
addCanvas();
}
@Override
public void keyPressed(KeyEvent e) {
if(canvas!=null) canvas.keyPressend(e.getKeyCode());
}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void keyTyped(KeyEvent e) {}
@Override
protected void windowClosing() {
System.out.println("developed by Nis Meinert");
}
@Override
public void stateChanged(ChangeEvent e) {
int dt = ((JSlider)e.getSource()).getValue();
dt += 25;
}
private void init() {
setTitle("Snake");
setLayout(new BorderLayout());
setSize(300, 300);
centerOnScreen();
addKeyListener(this);
}
private void addCanvas() {
canvas = new Canvas();
add(BorderLayout.CENTER, canvas);
}
private void addSlider() {
JSlider slider = new JSlider(0, 100, 50);
slider.addChangeListener(this);
slider.setPaintTicks(true);
slider.setMinorTickSpacing(10);
add(BorderLayout.SOUTH, slider);
}
}
Wenn ich das ganze ausführe, dann habe ich ein JFrame mit einem JPanel (heißt hier Canvas) und nen JSlider. Nun hat das ganze nen Keylistener. Der funktioniert aber irgendwie nicht mehr seitdem der JSlider da ist, der JSlider scheint irgendwie auch anfocussiert zu sein, der hat zumindestens so nen gestrichelt Rand drum herum.
a.) wie repariere ich den Keylistener?
b.) wie kriege ich diesen Focus vom JSlider runter?