Linie ausgeben, die sich auf Knopfdruck verlängert

Status
Nicht offen für weitere Antworten.

Schubi

Mitglied
Hallo :)
Also dieses Thema knüpft an das von gestern an (Linie ausgeben, die sich Periodisch verlängert).

Und zwar habe ich folgende Klassen:
(Habe die zu meinem Verständnis auskommentiert)

AnimationDemo:

Code:
import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class AnimationDemo extends JFrame implements KeyListener { //AnimationDemo erbt von JFrame bzw. AnimationDemo erweitert JPanel
        private Kurve neueKurve; //Objekt Kurve wird mit Namen "neueKurve" bereitgestellt
        private GrafikPanel grafikPanel;
        
        public AnimationDemo() { //Konstruktor
            super("Grafik"); //Beschriftung für das Zeichenfenster was noch erstellt wird
            setSize(500,500); //Größe für das Zeichenfenster
            setBackground(Color.white);
            grafikPanel = new GrafikPanel(); //Objekt GrafikPanel mit Namen "grafikPanel" wird erstellt
            add(grafikPanel); /* Fügt grafikPanel in den Container des JFrames ein (in dessen contentPanel)
                              ***Bedeutet das das Objekt "grafikPanel" im JFrame ausgegeben wird
                              ***Es wird also zu JFrame zum ausgeben hinzugefügt
                              */
            neueKurve = new Kurve(grafikPanel); //Objekt "neueKurve" wird erstellt und als Parameter das Objekt "grafikPanel" übergeben
            neueKurve.start(); //Thread wird gestartet
            setVisible(true); //Fenster sichtbar machen
        }
        public void keyPressed(KeyEvent event) {
            if(event.getKeyCode() == KeyEvent.VK_LEFT) {
              grafikPanel.setI();
            }
        }
        public void keyReleased(KeyEvent event) {
        }
        public void keyTyped(KeyEvent event) {
        }
        
        public static void main(String args[]) { 
            new AnimationDemo(); //Objekt AnimationDemo wird erstellt
        }
    }


Kurve:

Code:
import java.awt.*;
    import javax.swing.*;
    
    class Kurve extends Thread { // Klasse die von Thread erbt
        private GrafikPanel grafikPanel; // Objekt wird mit Namen "grafikPanel" belegt
        public Kurve(GrafikPanel grafikPanel) { //Methode, die ein Objekt als Parameter erwartet
            this.grafikPanel = grafikPanel; /*  Instanzvariable wird gezielt adressiert, da
                                            *** der Parameter auch grafikPanel heißt und er
                                            *** deswegen die Instanzvariable überlagert
                                            */
        }
        public void run() { // Thread wird gestartet                                
            while(true) {
                try {
                    sleep(50);
                }
                catch (InterruptedException e) {
                }
                grafikPanel.repaint(); /*  wird genutzt um "GrafikPanel neu zu zeichnen
                                       *** dadurch wird indirekt die Methode "paintComponent"
                                       *** aufgerufen und so die Linie aktualisiert.
                                       */
                
               // grafikPanel.setI(); //Methode "setI" wird aufgerufen 

            }
        }
    }

GrafikPanel:

Code:
    import java.awt.*;
    import javax.swing.*;
    
    class GrafikPanel extends JPanel { //GrafikPanel erbt von JPanel
        int i;
        public GrafikPanel() { //Konstruktor
            i = 41;
        }
        public void paintComponent(Graphics g) { /*  "paintComponent" ist eine von JPanel geerbte 
                                                 *** Methode,die wir überschreiben,d.h. neu definieren 
                                                 *** um unsere Linie zu zeichnen
                                                 *** "Graphics g" stellt ein Grafikobjekt mit dem Namen
                                                 *** g bereit und übergibt es "paintComponent"
                                                 */
            g.drawLine(100,40,100,i); //Linie wird gezeichnet an Positionen (x1,y1 zu x2,y2) 
        }
        public void setI() { //Methode die I um 1 erhöht
            i++;
        }
    }

Auf tastendruck soll jetzt die Linie verlängert werden. Warum bleibt Trotzdem wenn ich die Pfeiltaste nach Links drücke die Linie gleichlang? Ich erhöhe doch die Variable i um 1, oder etwa nicht?

Danke im vorraus :)

MfG

Schubi
 
S

SlaterB

Gast
du brauchst unbedingt
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sonst laufen einmal gestartete Programme im weiter, auch wenn das Fenster geschlossen wird,

--------------

mach doch erstmal einen einfachen KeyListener

public void keyPressed(KeyEvent event) {
System.out.println("keyPressed");
}

public void keyReleased(KeyEvent event) {
System.out.println("keyReleased");
}

public void keyTyped(KeyEvent event) {
System.out.println("keyTyped");
}

um zu sehen, ob das überhaupt funktioniert

------------

der KeyListener wird in deinem Programm nämlich nirgendwo verwendet, daher auch keine Reaktion auf die Tastatur,

im JFrame
addKeyListener(this);
scheint zu funktionieren, dann sehe ich auch die Linie wachsen,
ein Pixel ist natürlich nicht allzu viel
 

Schubi

Mitglied
Ups ^^
Ja klar :) Man irgendwie ist das ungewohnt das man jede Aktion die man machen möchte vorher im JFrame "adden" muss!
Also das Turtle Prinzip war einfacher *gg* ;)

Danke schön, funktioniert alles wie ich es mir vorstelle :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Linie ausgeben, die sich periodisch verlängert Java Basics - Anfänger-Themen 10
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
J Linie wird zu lang gezeichnet Java Basics - Anfänger-Themen 4
C JFreeChart Linie nicht korrekt dargestellt Java Basics - Anfänger-Themen 1
L Anfängerin möchte Linie zeichnen Java Basics - Anfänger-Themen 8
P Überprüfen ob Mausklick auf Linie ist? Java Basics - Anfänger-Themen 6
W drawLine(...) - Linie soll nur begrenzt lang sein Java Basics - Anfänger-Themen 9
snipesss Linie zeichnen ohne extra Klasse? Java Basics - Anfänger-Themen 3
H Linie zeichnen... Java Basics - Anfänger-Themen 16
H Erste Schritte Linie/Raster mit Magnetfunktion Java Basics - Anfänger-Themen 1
X Kreis/Linie Programmieren Java Basics - Anfänger-Themen 1
B Konsoleninput eingegebene linie nach Eingabe löschen Java Basics - Anfänger-Themen 5
A Linie Zeichnen Applet mit Double Wert Java Basics - Anfänger-Themen 3
N Linie auf spezielle Area zeichnen Java Basics - Anfänger-Themen 9
H gezeichnete Linie Eventhandling Java Basics - Anfänger-Themen 2
G Frage wegen Applet( Linie) Java Basics - Anfänger-Themen 2
G Linie zeichen mit JLabel Java Basics - Anfänger-Themen 7
M Linie Java Basics - Anfänger-Themen 4
A Linie zeichnen Java Basics - Anfänger-Themen 4
S Fette Linie zeichnen Java Basics - Anfänger-Themen 3
V Linie beginnt nich bei 0,0 Java Basics - Anfänger-Themen 2
G Linie innerhalb Rechteck Java Basics - Anfänger-Themen 2
G dicke linie zeichnen bzw schräges rechteck füllen Java Basics - Anfänger-Themen 2
M AWT -eigene DrawLine Methode mit Farbverlauf in der Linie ? Java Basics - Anfänger-Themen 2
G Linie/Gitter in GridBagLayout Java Basics - Anfänger-Themen 4
A Linie zeichnen per Knopfdruck --> Fehler Java Basics - Anfänger-Themen 7
B Eine Linie zeichnenmit Java, ich verstehe das einfach nicht Java Basics - Anfänger-Themen 4
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
Glühlampe Usereingabe in der gleichen Zeile ausgeben Java Basics - Anfänger-Themen 6
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
H Minimum und Maximum ausgeben lassen Java Basics - Anfänger-Themen 7
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
I Wortkette in umgekehrter Rheinfolge + in neuer Zeile ausgeben Java Basics - Anfänger-Themen 4
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
Tommilee Char ausgeben Java Basics - Anfänger-Themen 5
K Geldbetrag in Euro + Cents ausgeben Java Basics - Anfänger-Themen 24
M geschachtelte for-Schleifen - Einmaleins ausgeben Java Basics - Anfänger-Themen 3
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
JavaBeginner22 Wort mit der größten Länge ausgeben Java Basics - Anfänger-Themen 4
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
D Grafik auf ein JPane ausgeben. Java Basics - Anfänger-Themen 6
berserkerdq2 Methodenaufrufstapel ausgeben, was ist das? Java Basics - Anfänger-Themen 2
rosima26 Geordnete Arrays ausgeben Java Basics - Anfänger-Themen 31
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
C Zwei Arrays addieren und ausgeben Java Basics - Anfänger-Themen 3
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
Robin Gentele XML von Webserver lesen und ausgeben Java Basics - Anfänger-Themen 5
W Array ausgeben Java Basics - Anfänger-Themen 29
I 2D-Array Position der Liste ausgeben. Java Basics - Anfänger-Themen 2
S Schachbrettmuster ausgeben Java Basics - Anfänger-Themen 3
J Zahlen bis zu einem bestimmten Grenzwert ausgeben Java Basics - Anfänger-Themen 11
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Array rückwärts ausgeben Java Basics - Anfänger-Themen 2
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
Kotelettklopfer Stringbuilder mit print ausgeben Java Basics - Anfänger-Themen 83
L Methoden Rückgabewert Verbergen / nicht mit ausgeben Java Basics - Anfänger-Themen 4
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
S Primzahlen in Array ausgeben Java Basics - Anfänger-Themen 14
O Anzahl Datensätze ausgeben Java Basics - Anfänger-Themen 5
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
C Matrix mit Array ausgeben Java Basics - Anfänger-Themen 6
Poppigescorn Mithilfe einer Arrayliste einen Notenspiegel ausgeben Java Basics - Anfänger-Themen 12
C Methode Grouping mit Werten ausgeben Java Basics - Anfänger-Themen 2
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
ansystin Teilerfremde Zahlen ausgeben + Zahlenausgabe speichern Java Basics - Anfänger-Themen 3
J Koordinaten per Schleife ausgeben Java Basics - Anfänger-Themen 6
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
H Eingegebene Zahlen mit Array ausgeben Java Basics - Anfänger-Themen 18
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
I 12 Spalten von jeweils 30 Zahlen in Konsole ausgeben Java Basics - Anfänger-Themen 6
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
C Erste Schritte Muster ausgeben in der Konsole - großes V Java Basics - Anfänger-Themen 5
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
KogoroMori21 Methode in der main ausgeben Java Basics - Anfänger-Themen 2
M Wie kann ich hier den Abstand ausgeben? Java Basics - Anfänger-Themen 3
W Anzahl der Zeilen ausgeben lassen Java Basics - Anfänger-Themen 20
U Teilergebniss mit 0 nicht ausgeben Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben