ProgrammierHilfe dringend gesucht ( Icon bewegen)

SystemExit

Mitglied
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class IconBewegtSich extends JFrame {
  private JLabel LabelFigur1 = new JLabel();
  private ImageIcon LabelFigur1Icon = new ImageIcon(getClass().getResource("images/FigurEins.png"));
 
  public IconBewegtSich() {
    super("IconBewegtSich");
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 295;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // start components   
    LabelFigur1.setBounds(88, 48, 81, 65);
    LabelFigur1.setText("");
    LabelFigur1.setIcon(LabelFigur1Icon);
    cp.add(LabelFigur1);
    // end components
    setVisible(true);
  }
    
  public static void main(String[] args) {
    new IconBewegtSich();
  }
 
 
    public void keyTyped(KeyEvent e) {
    }
 
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
              LabelFigur1.setLocation(LabelFigur1.getLocation().x +5, LabelFigur1.getLocation().y);
        } else if (e.getKeyCode() == KeyEvent.VK_LEFT){
            LabelFigur1.setLocation(LabelFigur1.getLocation().x -5, LabelFigur1.getLocation().y);
        } else if(e.getKeyCode() == KeyEvent.VK_DOWN) {
            LabelFigur1.setLocation(LabelFigur1.getLocation().x, LabelFigur1.getLocation().y+5);
        } else if(e.getKeyCode() == KeyEvent.VK_UP) {
            LabelFigur1.setLocation(LabelFigur1.getLocation().x, LabelFigur1.getLocation().y -5);
        }
    }
 

    public void keyReleased(KeyEvent e) {
    }
 
 
  // end methods
} // end of class IconBewegtSich




Ich möchte ein jLabel auf Knopfdruck beliebeig bewegen. Der Code hat keine "fehler", aber mein Label bewegt sich nicht.
 
K

kneitzel

Gast
Also nur weil Du in einer Klasse eine Methode schreibst, wird diese doch noch nicht aufgerufen. Deine Methode keyPressed wird nie aufgerufen, daher tut sich da auch nichts.

Wenn Deine Klasse auch ein KeyListener sein soll, dann musst Du das der Klasse erst einmal sagen: "implements KeyListener".

Und dann musst Du dem Frame sagen, dass die Instanz der KeyListener ist. Also im Konstruktor noch ein "addKeyListener(this);".
 

SystemExit

Mitglied
Also nur weil Du in einer Klasse eine Methode schreibst, wird diese doch noch nicht aufgerufen. Deine Methode keyPressed wird nie aufgerufen, daher tut sich da auch nichts.

Wenn Deine Klasse auch ein KeyListener sein soll, dann musst Du das der Klasse erst einmal sagen: "implements KeyListener".

Und dann musst Du dem Frame sagen, dass die Instanz der KeyListener ist. Also im Konstruktor noch ein "addKeyListener(this);".


Könntest du bitte mir deine verbesserte Version, ohne meinen Code gross zuverändern ( Also damit ich verstehe, was du gemacht hast) hier schicken? Wäre sehr hilfreich direkt an einem Beispiel zulernen. ;=)


Und ich wollte alles in einer Klasse schreiben. geht das?
 
K

kneitzel

Gast
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

// Hier das implements KeyListener:
public class IconBewegtSich extends JFrame implements KeyListener {
  private JLabel LabelFigur1 = new JLabel();
  private ImageIcon LabelFigur1Icon = new ImageIcon(getClass().getResource("images/FigurEins.png"));
 
  public IconBewegtSich() {
    super("IconBewegtSich");
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 295;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // start components   
    LabelFigur1.setBounds(88, 48, 81, 65);
    LabelFigur1.setText("");
    LabelFigur1.setIcon(LabelFigur1Icon);
    cp.add(LabelFigur1);
    // Hier das Hinzufügen des KeyListeners.
    this.addKeyListener(this);
    // end components
    setVisible(true);
  }
    
  public static void main(String[] args) {
    new IconBewegtSich();
  }
 
 
    public void keyTyped(KeyEvent e) {
    }
 
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
              LabelFigur1.setLocation(LabelFigur1.getLocation().x +5, LabelFigur1.getLocation().y);
        } else if (e.getKeyCode() == KeyEvent.VK_LEFT){
            LabelFigur1.setLocation(LabelFigur1.getLocation().x -5, LabelFigur1.getLocation().y);
        } else if(e.getKeyCode() == KeyEvent.VK_DOWN) {
            LabelFigur1.setLocation(LabelFigur1.getLocation().x, LabelFigur1.getLocation().y+5);
        } else if(e.getKeyCode() == KeyEvent.VK_UP) {
            LabelFigur1.setLocation(LabelFigur1.getLocation().x, LabelFigur1.getLocation().y -5);
        }
    }
 

    public void keyReleased(KeyEvent e) {
    }
 
 
  // end methods
} // end of class IconBewegtSich

Du hast die Kommentare, wo ich das Beschriebene eingefügt habe.

Ausführliche Erläuterung:
Es gibt sogenannte KeyListener. Das sind Instanzen, die das Interface KeyListener implementieren. Zum Implementieren gehört a) das "implements", das klar sagt: Ich stelle dieses Interface bereit. Und b) dann natürlich die Methoden, die von dem Interface gefordert werden. (Diese hattest Du schon in Deinem Code drin.)

Wenn Du so einen KeyListener hast (In Deinem Fall ist die Instanz von IconBewegtSicht nun auch ein KeyListener), dann kannst Du diesen KeyListener an das Frame geben. Dann weiß das Frame: Wenn eine Taste gedrückt wurde, dann soll ich der Instanz Bescheid sagen.

Das fehlte auch in Deinem Code.

Das ist die übliche Lösung für sowas - das Frame bietet Events an und dann gibt es EventListener, die darauf hören. Relativ unspektakulär.
 

SystemExit

Mitglied
Noch eine Frage
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

// Hier das implements KeyListener:
public class IconBewegtSich extends JFrame implements KeyListener {
  private JLabel LabelFigur1 = new JLabel();
  private ImageIcon LabelFigur1Icon = new ImageIcon(getClass().getResource("images/FigurEins.png"));

  public IconBewegtSich() {
    super("IconBewegtSich");
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 295;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // start components  
    LabelFigur1.setBounds(88, 48, 81, 65);
    LabelFigur1.setText("");
    LabelFigur1.setIcon(LabelFigur1Icon);
    cp.add(LabelFigur1);
    // Hier das Hinzufügen des KeyListeners.
    this.addKeyListener(this);
    // end components
    setVisible(true);
  }
   
  public static void main(String[] args) {
    new IconBewegtSich();
  }


    public void keyTyped(KeyEvent e) {
    }

    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
              LabelFigur1.setLocation(LabelFigur1.getLocation().x +5, LabelFigur1.getLocation().y);
        } else if (e.getKeyCode() == KeyEvent.VK_LEFT){
            LabelFigur1.setLocation(LabelFigur1.getLocation().x -5, LabelFigur1.getLocation().y);
        } else if(e.getKeyCode() == KeyEvent.VK_DOWN) {
            LabelFigur1.setLocation(LabelFigur1.getLocation().x, LabelFigur1.getLocation().y+5);
        } else if(e.getKeyCode() == KeyEvent.VK_UP) {
            LabelFigur1.setLocation(LabelFigur1.getLocation().x, LabelFigur1.getLocation().y -5);
        }
    }


    public void keyReleased(KeyEvent e) {
    }


  // end methods
} // end of class IconBewegtSich

Du hast die Kommentare, wo ich das Beschriebene eingefügt habe.

Ausführliche Erläuterung:
Es gibt sogenannte KeyListener. Das sind Instanzen, die das Interface KeyListener implementieren. Zum Implementieren gehört a) das "implements", das klar sagt: Ich stelle dieses Interface bereit. Und b) dann natürlich die Methoden, die von dem Interface gefordert werden. (Diese hattest Du schon in Deinem Code drin.)

Wenn Du so einen KeyListener hast (In Deinem Fall ist die Instanz von IconBewegtSicht nun auch ein KeyListener), dann kannst Du diesen KeyListener an das Frame geben. Dann weiß das Frame: Wenn eine Taste gedrückt wurde, dann soll ich der Instanz Bescheid sagen.

Das fehlte auch in Deinem Code.

Das ist die übliche Lösung für sowas - das Frame bietet Events an und dann gibt es EventListener, die darauf hören. Relativ unspektakulär.


Noch eine kleine Frage ;

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class IconBewegung extends JFrame implements KeyListener {
  private JLabel LabelFigur = new JLabel();
  private ImageIcon LabelFigurIcon = new ImageIcon(getClass().getResource("images/FigurEins.png"));
  private JLabel LabelGegner = new JLabel();
  private ImageIcon LabelGegnerIcon = new ImageIcon(getClass().getResource("images/Gegner1.png"));
 
  public IconBewegung() {
    super("IconBewegung");
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 300;
    int frameHeight = 296;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    setResizable(true);
    Container cp = getContentPane();
    cp.setLayout(null);
    // start components
    LabelFigur.setBounds(32, 96, 81, 65);
    LabelFigur.setText("");
    LabelFigur.setIcon(LabelFigurIcon);
    cp.add(LabelFigur);
    this.addKeyListener(this);
    LabelGegner.setBounds(176, 48, 81, 65);
    LabelGegner.setText("");
    LabelGegner.setIcon(LabelGegnerIcon);
    cp.add(LabelGegner);
    // end components
    setVisible(true);
  }
 
  public static void main(String[] args) {
    new IconBewegung();
  }
 
 
   public void keyTyped(KeyEvent e) {
    }
 
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
            LabelFigur.setLocation(LabelFigur.getLocation().x +1, LabelFigur.getLocation().y);
            Gegner();
            ZeigeMirDieLocation();
        } else if (e.getKeyCode() == KeyEvent.VK_LEFT){
            LabelFigur.setLocation(LabelFigur.getLocation().x -1, LabelFigur.getLocation().y);
            Gegner();
            ZeigeMirDieLocation();
        } else if(e.getKeyCode() == KeyEvent.VK_DOWN) {
            LabelFigur.setLocation(LabelFigur.getLocation().x, LabelFigur.getLocation().y+1);
            Gegner();
            ZeigeMirDieLocation();
        } else if(e.getKeyCode() == KeyEvent.VK_UP) {
            LabelFigur.setLocation(LabelFigur.getLocation().x, LabelFigur.getLocation().y -1);
            Gegner();
            ZeigeMirDieLocation();
        }
    }
 

    public void keyReleased(KeyEvent e) {
    }
 
    public void Gegner() {
     if (LabelFigur.getLocation() == LabelGegner.getLocation()) {
      System.exit(0);
     }
    }
 
  public void ZeigeMirDieLocation() {
    System.out.println(LabelFigur.getLocation());
    System.out.println(LabelGegner.getLocation());
  }
 
 
  // end methods
} // end of class IconBewegung




Also ich habe jetzt einen Gegner, der sich nicht bewegt. Wenn meine Figur die exakte Location vom gegner hat, dann soll Gegner(); ausgeführt werden, ich kontrolliere das mit ZeigeMirDieLocation, aber wenn die Location genau gleich ist, wird Gegner(); trotdem nicht ausgeführt, woran liegt das?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
Neuling47 bräuchte dringend hilfe Java Basics - Anfänger-Themen 6
Gaudimagspam Dringend Java Hilfe benötigt Java Basics - Anfänger-Themen 19
D Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben Java Basics - Anfänger-Themen 11
A suche dringend Hilfe!! Java Basics - Anfänger-Themen 6
C Brauche dringend Hilfe. Umfrage mit ja und nein in Java erstellen? Java Basics - Anfänger-Themen 12
M JDK installieren Brauche dringend Hilfe Java Basics - Anfänger-Themen 2
M Dringend Experten für Scala-Play basierte Programmierung!!!! Java Basics - Anfänger-Themen 0
Z Erste Schritte Bitte helft mir dringend!! Java Basics - Anfänger-Themen 3
J Ich bitte DRINGEND um Hilfe!!! Java Basics - Anfänger-Themen 16
S Erste Schritte BlueJ-Aufgabe: Programmcode / Brauche dringend Hilfe !!! Java Basics - Anfänger-Themen 37
C Brauche dringend hilfe beim exception im code Java Basics - Anfänger-Themen 5
R GUI mit if-Verzweigung kombiniert - Illegal start of expression (Dringend) Java Basics - Anfänger-Themen 7
X DB4O Collections and Arrays, brauche dringend Hilfe! Java Basics - Anfänger-Themen 3
M Denkanstoß für Umlaufzahl dringend benötigt! Java Basics - Anfänger-Themen 9
A Hangman in Java programmieren - dringend Java Basics - Anfänger-Themen 8
L Brauche bitte dringend Hilfe für Klausur Java Basics - Anfänger-Themen 8
U Dringend: Syntax error on token "else" Java Basics - Anfänger-Themen 8
R While schleife in For Schleife umwandeln -- Dringend Java Basics - Anfänger-Themen 8
S Dringend! NullPointerException Java Basics - Anfänger-Themen 4
G Problem mit Zählschleife - Brauche dringend Unterstützung. Java Basics - Anfänger-Themen 5
C Brauche dringend H!lfe :( Java Basics - Anfänger-Themen 3
T [Dringend] Classpath-Problem Java Basics - Anfänger-Themen 3
K brauch dringend Hilfe *.jar abänder Java Basics - Anfänger-Themen 2
0 Ich brauche dringend Hilfe PRIMZAHLENZWILLINGE Java Basics - Anfänger-Themen 16
T Hilfe brauche dringend hilfe Java Basics - Anfänger-Themen 3
S Blutiger Java Anfänger braucht dringend Hilfe Java Basics - Anfänger-Themen 4
U ArrayIndexOutOfBoundsException - dringend Hilfe gesucht Java Basics - Anfänger-Themen 8
K Bräuchte dringend Hilfe bei einer Schulaufgabe Java Basics - Anfänger-Themen 2
N adt liste - dringend! Java Basics - Anfänger-Themen 3
H Brauche ganz dringend HILFEEE! Math random Java Basics - Anfänger-Themen 19
S Brauche ganz dringend Hilfe Java Basics - Anfänger-Themen 4
G schaut mal dringend rein(ist das realistisch) Java Basics - Anfänger-Themen 9
N Brauche dringend hilfe! Prog mit Fehlern Java Basics - Anfänger-Themen 2
S Listen - insert - print etc. Dringend! Bitte! Java Basics - Anfänger-Themen 6
S Brauche bitte dringend Übungsbeispiele! Java Basics - Anfänger-Themen 2
B zeus und java !!!brauche dringend hilfe!!! Java Basics - Anfänger-Themen 29
F Dringend: Einbinden einer Methode in die Hauptmethode !!! Java Basics - Anfänger-Themen 43
T Brauche dringend Hilfe Java Basics - Anfänger-Themen 22
N Turtles ? dringend Java Basics - Anfänger-Themen 3
B Frage zu BigDecimal! dringend Java Basics - Anfänger-Themen 2
P Hilfe gesucht Java Basics - Anfänger-Themen 11
Scappy Java Lernpartner gesucht! Java Basics - Anfänger-Themen 40
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
I Wasserzeichen API gesucht Java Basics - Anfänger-Themen 2
S Anfängeraufgaben gesucht Java Basics - Anfänger-Themen 29
U BestPractise für Deployment unter Windows gesucht Java Basics - Anfänger-Themen 12
R OOP Einfaches Programmierbeispiel für Assoziation, Aggregation und Komposition gesucht Java Basics - Anfänger-Themen 10
W Neues Lern-Projekt gesucht Java Basics - Anfänger-Themen 8
CT9288 Permanent laufender loop mit Eingabefunktion gesucht Java Basics - Anfänger-Themen 1
der_Schokomuffin Hilfe gesucht beim Thema Objekte übergeben! Java Basics - Anfänger-Themen 2
der_Schokomuffin Hilfe gesucht: String wird auf null gesetzt! Java Basics - Anfänger-Themen 17
O Lösungsansatz gesucht Java Basics - Anfänger-Themen 4
Y Konkrete Hilfe gesucht - Anzahl der Stellen einer eingegebenen Zahl überprüfen Java Basics - Anfänger-Themen 5
W Erste Schritte Rechnen mit Schleifen? Denkanstoß gesucht Java Basics - Anfänger-Themen 15
V Erste Schritte Hilfe gesucht beim einstieg in Java und erste Aufgaben aus der Berufsschule Java Basics - Anfänger-Themen 9
R Spotify API gesucht Java Basics - Anfänger-Themen 3
M Java Insel Aufgaben von der DVD gesucht Java Basics - Anfänger-Themen 2
M Open Source Projekt mit Unit Tests gesucht Java Basics - Anfänger-Themen 5
T Gesucht: Tutorial im Anschluß an Gailer-net bzw. Bradley Kjell Java Basics - Anfänger-Themen 0
Salo Datentypen "Doppelt" List(e) ("gesucht") Java Basics - Anfänger-Themen 6
D Array mit Zufallszahlen, dann sortieren: Hilfe gesucht! Java Basics - Anfänger-Themen 1
D Klassen Gesucht: Einfache Beispiel-Klasse für einen Datentyp Java Basics - Anfänger-Themen 7
G Bei Mouseover Grafik ändern, gutes Vorgehen gesucht Java Basics - Anfänger-Themen 0
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
cyro Best Practice Bessere Alterative zu ArrayList gesucht Java Basics - Anfänger-Themen 3
C Lösung für RegEx in Java gesucht Java Basics - Anfänger-Themen 2
E Event gesucht Java Basics - Anfänger-Themen 1
D Kürzel für a = a && b gesucht Java Basics - Anfänger-Themen 12
E Hilfe zur Performance Verbesserung gesucht Java Basics - Anfänger-Themen 1
A Best Practice Ideen für kleines Anfängerschulprojekt gesucht Java Basics - Anfänger-Themen 4
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
C Hilfe für Spielerweiterung gesucht Java Basics - Anfänger-Themen 4
C Hilfe für Kommentar-Zapper gesucht / Umgang mit Console Java Basics - Anfänger-Themen 0
M Datenstruktur gesucht Java Basics - Anfänger-Themen 3
S Projekt-Idee für testgetriebene Entwicklung gesucht Java Basics - Anfänger-Themen 2
G Möglichkeit zum Auslesen von Webseiten gesucht. Java Basics - Anfänger-Themen 10
K Gutes Java 3D Game Tutorial gesucht Java Basics - Anfänger-Themen 6
O Java - "Learning by doing" - Übungsaufgaben gesucht. Java Basics - Anfänger-Themen 5
F JavaLernpartner gesucht Java Basics - Anfänger-Themen 13
J Erste Schritte Java "Lehrer" gesucht Java Basics - Anfänger-Themen 22
K Hamstersimulator / Hamster Modell Lösungen gesucht Java Basics - Anfänger-Themen 3
J Erste Schritte If-Else Idee gesucht Java Basics - Anfänger-Themen 6
A Datentypen Mehrdimensionaler Datentyp gesucht Java Basics - Anfänger-Themen 4
P Java anfänger tutorial gesucht Java Basics - Anfänger-Themen 12
M Sortieralgoritmus für großes Array gesucht Java Basics - Anfänger-Themen 10
P Kontrollstrukturen Ergebnis gesucht Java Basics - Anfänger-Themen 10
S Mathe Lib gesucht Java Basics - Anfänger-Themen 2
B Regulärer Ausdruck gesucht Java Basics - Anfänger-Themen 6
D Java Quiz gesucht Java Basics - Anfänger-Themen 7
G Regex für 1 und 2 gesucht Java Basics - Anfänger-Themen 18
A Befehl gesucht....wie komme ich an Folgendes Objekt? Java Basics - Anfänger-Themen 6
R Passende Collection gesucht Java Basics - Anfänger-Themen 11
Y Regexp gesucht Java Basics - Anfänger-Themen 6
R Java-Anfänger-Projekt-Begleiter gesucht Java Basics - Anfänger-Themen 18
Binary.Coder Bluej ähnlicher Inspektor gesucht Java Basics - Anfänger-Themen 3
C Klassen Array-Klasse gesucht Java Basics - Anfänger-Themen 4
J "Java 2 Standart Edition SDK" Gesucht Java Basics - Anfänger-Themen 4
C Buch für Einsteiger gesucht Java Basics - Anfänger-Themen 2
M einfache Übungsaufgaben gesucht Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben