B
ByeBye 249712
Hallo, ich möchte ein Spielfeld erstellen auf dem sich zwei punkte bewegen lassen.
Allerdings bekomme ich es nicht hin das sich auf einem JFrame 2 Punkte gleichzeitig bewegen. Woran kann das liegen?
Also hier ist die Main:
Wenn ich dort nur eine der add-Methoden aktiviere dann erscheint oben links der Kreis, wie gewünscht und lässt sich auch mit den dafür vorgesehenen Tastenbelegungen bewegen. Sind jedoch beide add-Methoden aktiv so erscheind ein Kreis oben links und lässt sich aber nicht bewegen. Kann mir jemand sagen warum?
heier die beiden Klassen zum KeyListener:
Allerdings bekomme ich es nicht hin das sich auf einem JFrame 2 Punkte gleichzeitig bewegen. Woran kann das liegen?
Also hier ist die Main:
Java:
import javax.swing.JFrame;
public class startup {
public static void main(String args[]){
JFrame f = new JFrame();
keylistener s = new keylistener();
keylistener2 t = new keylistener2();
f.add(s);
f.add(t);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(800,600);
}
}
Wenn ich dort nur eine der add-Methoden aktiviere dann erscheint oben links der Kreis, wie gewünscht und lässt sich auch mit den dafür vorgesehenen Tastenbelegungen bewegen. Sind jedoch beide add-Methoden aktiv so erscheind ein Kreis oben links und lässt sich aber nicht bewegen. Kann mir jemand sagen warum?
heier die beiden Klassen zum KeyListener:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.Event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.*;
public class keylistener extends JPanel implements ActionListener, KeyListener {
Timer t = new Timer (5, (ActionListener) this);
double x = 0, y = 0, velx = 0, vely =0;
public keylistener(){
t.start();
addKeyListener((KeyListener) this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
}
public void paint(Graphics g){
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
g2.fill(new Ellipse2D.Double(x, y, 40, 40));
}
public void actionPerformed(ActionEvent e){
repaint();
x += velx;
y += vely;
}
public void up() {
vely= -1.5;
velx= 0;
}
public void down() {
vely= 1.5;
velx= 0;
}
public void left() {
velx= -1.5;
vely= 0;
}
public void right() {
velx= 1.5;
vely= 0;
}
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if (code == KeyEvent.VK_UP){
up();
}
if (code == KeyEvent.VK_DOWN){
down();
}
if (code == KeyEvent.VK_RIGHT){
right();
}
if (code == KeyEvent.VK_LEFT){
left();
}
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e){
}
}
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.Event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.*;
public class keylistener2 extends JPanel implements ActionListener, KeyListener {
Timer t = new Timer (5, (ActionListener) this);
double x = 0, y = 0, velx = 0, vely =0;
public keylistener2(){
t.start();
addKeyListener((KeyListener) this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
}
public void paint(Graphics g){
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
g2.fill(new Ellipse2D.Double(x, y, 40, 40));
}
public void actionPerformed(ActionEvent e){
repaint();
x += velx;
y += vely;
}
public void up() {
vely= -1.5;
velx= 0;
}
public void down() {
vely= 1.5;
velx= 0;
}
public void left() {
velx= -1.5;
vely= 0;
}
public void right() {
velx= 1.5;
vely= 0;
}
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if (code == KeyEvent.VK_W){
up();
}
if (code == KeyEvent.VK_S){
down();
}
if (code == KeyEvent.VK_D){
right();
}
if (code == KeyEvent.VK_A){
left();
}
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e){
}
}