Ich habe ein Problem mit repaint()
Methode in meinem Java Code. Ich möchte es in einer anderen class
anrufen, aber ich kann nicht, etwas überhaupt nicht funktioniert. Ich habe in Foren gesucht, aber nichts konnte mir helfen.Repaint() Methode Aufruf in einer anderen Klasse
Mein Hauptclass
:
public class Main {
public static Main main;
public static JFrame f;
public Main(){
}
public static void main(String[] args) {
main = new Main();
f = new JFrame();
Ball b = new Ball();
f.getContentPane().setBackground(Color.GRAY);
f.add(b);
f.setSize(500, 500);
f.setLocationRelativeTo(null);
f.setTitle("Test");
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.addMouseMotionListener(b);
f.addKeyListener(new Key());
}
}
Kugelclass
wo ich 2DGraphics zum Bewegen Formen erstellt:
public class Ball extends JLabel implements MouseMotionListener{
public Ball(){
}
public static double x = 10;
public static double y = 10;
public static double width = 40;
public static double height = 40;
String nick;
boolean isEllipse = true;
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
if(isEllipse){
Ellipse2D e2d = new Ellipse2D.Double(x, y, width, height);
g2d.setColor(Color.RED);
g2d.fill(e2d);
}
else{
Rectangle2D r2d = new Rectangle2D.Double(x, y, width, height);
g2d.setColor(Color.GREEN);
g2d.fill(r2d);
}
}
@Override
public void mouseDragged(MouseEvent e) {
isEllipse = false;
x = e.getX() - 30;
y = e.getY() - 40;
this.repaint();
}
@Override
public void mouseMoved(MouseEvent e) {
x = e.getX() - 30;
y = e.getY() - 40;
isEllipse = true;
this.repaint();
}
}
Und Keyclass
wo ich KeyListener
die Formen für Bewegung setzen durch Tastendruck:
public class Key extends Ball implements KeyListener {
public Key() {
}
@SuppressWarnings("static-access")
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_W){
super.x += 10;
super.repaint();
System.out.println("x: " + super.x);
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
Aber etwas ist mit diesem Code falsch: Super Methode für nicht Keyclass
funktioniert. Alles in Ballclass
funktioniert gut. Wo ist das Problem?
Oh danke, funktioniert es jetzt. :) Ich benutze KeyListener, weil ich nicht etwas Großes machen werde, tatsächlich verwende ich seit 2014 kein "klares" Java (ohne erweiterte Bibliotheken für Spiele-Plugins) und jetzt muss ich das von Anfang an erinnern . : D – McDaniel