Brauche Hilfe bei Simulation einer Flugkurve .

Status
Nicht offen für weitere Antworten.

Kussefar

Mitglied
Hi,

muss für morgen^^ ein Prog schreiben, was den Schiefen Wurf in echtzeicht simuliert.....
Hab damit so noch nix gemacht also irgendwas zu simulieren....
Hab mir erstmal gedacht machste erstma dass es immer neu gezeichnet wird auf kopfdruck...so dass klappt auch schonmal nciht warum...frag mich nicht....

hier mla der Quelltext :
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
  *
  * <Beschreibung>
  *
  * @version 1.0 vom 23.04.2006
  * @author  Das ist die Vorlage
  */

public class schiefer_wurf_simulation extends JFrame {
  // Anfang Variablen
  
  double y = 0;
  double vy = 0;
  double x = 0;
  double vx = 0;
  double v0 = 5;
  double t = 0;
  double dt = 0.01;
  

  
  private JSlider Winkel = new JSlider();
  private JSlider Geschw = new JSlider();
  private JButton jButton1 = new JButton();
  private JPanel jPanel1 = new JPanel(null)
   {
     public void paint(Graphics g)
     {
      g.drawLine(0,0,0,getHeight());
      g.drawString("y",5,5);
      g.drawLine(0,getHeight()-1,getWidth(),getHeight()-1);
      g.drawString("x",getWidth()-5,getHeight()-5);

      //berechnen


      vy = b * Math.sin(a*Math.PI/180);
      vx = b * Math.cos(a*Math.PI/180);

      while ( y >= 0)
       {
         g.setColor(Color.red);

         y = y + vy + dt;
         vy = vy - 9.81*dt;
         x = x + vx + dt;

         g.fillOval((int)x,getHeight()-(int)y,2,2);

       }
     }
   };
   
   int a = 45;
   int b = 5;
  // Ende Variablen

  public schiefer_wurf_simulation (String title) {
    // Frame-Initialisierung
    super (title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 300;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten

    jPanel1.setBounds(32, 24, 225, 169);
    jPanel1.setBackground(Color.YELLOW);
    cp.add(jPanel1);
    Winkel.setBounds(32, 216, 81, 17);
    Winkel.setValue(5);
    Winkel.setOrientation(Scrollbar.HORIZONTAL);
    Winkel.setMaximum(10);
    cp.add(Winkel);
    Geschw.setBounds(144, 216, 89, 17);
    Geschw.setValue(45);
    Geschw.setOrientation(Scrollbar.HORIZONTAL);
    Geschw.setMaximum(90);
    cp.add(Geschw);
    jButton1.setBounds(96, 256, 81, 17);
    jButton1.setText("zeichnen");
    cp.add(jButton1);
    jButton1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton1ActionPerformed(evt);
      }
    });

    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Ereignisprozeduren
  public void jButton1ActionPerformed(ActionEvent evt) {

    
    a = Winkel.getValue();
    b = Geschw.getValue();
    
    jPanel1.repaint();

  }

  // Ende Ereignisprozeduren

  public static void main(String[] args) {
    new schiefer_wurf_simulation("schiefer_wurf_simulation");
  }
}

hoffe mir kann jemand helfen...

mfg
 

Illuvatar

Top Contributor
Was ich damit sagen wollte:
Vor dem ersten Posten bitte lesen! hat gesagt.:
7.) Es hilft uns nichts wenn du sagst du hast eine Exception oder sonstigen Fehler, du aber weder den Fehler postest, noch Code (wir können nicht hellsehen).

8.) Informationen über deinen Compiler, IDE und Betriebssystem sind auch hilfreich (bei UnsatisfiedLinkError überhaupt).
 

Kussefar

Mitglied
?? Hab doch den Quellcode gepostet !?!
Und den Fehler finde ich ja selbst nicht...lässt sich alles compilieren aber
muss halt irgendwas im Prog flasch sein dass er es halt nicht nue zeichnet...

was is daran falsch bitte?
 

Leroy42

Top Contributor
Kussefar hat gesagt.:
Und den Fehler finde ich ja selbst nicht...

Davon reden wir doch die ganze Zeit :shock: Was ist denn der Fehler?

Du sagst das Programm kompiliert und läuft (hab's nicht selbst geprüft, aber glaube dir),
sagst aber nicht was es falsch macht

Was mir auffällt, ist, daß du die gesamte Bewegung auf einmal zeichnest, keinerlei
Pausen (geschweige dann Echtzeitpausen) einlegst und nur einmal repaint aufrufst.
:shock: :shock: :shock:
Also erklär erst mal was nun falsch ist.
 

Kussefar

Mitglied
ok, also die idee von mir war einfach dass ich den winkel und die anfangsgeschwindigkeit mit den beiden slidern vorher einstellen kann und dann auf den button drücke und er mir die neue Kurve zeichnet.

Das macht das prog halt leider nicht und ich finde nicht warum es nicht geht.
 

Leroy42

Top Contributor
1. Du überschreibst paint statt paintComponent
2. Als erste Anweisung von paintComponent muß stehen super.repaintComponent(g);

Damit ist zum einen der gelbe Hintergrund zu sehen. Zum zweiten verwurschtelt die Ausgabe nicht mehr.

3. Du setzt x und y nicht bei jedem Durchlauf deiner Zeichenroutine vorher auf 0 zurück
4. Du vertauschst die Bedeutung von a und b (Geschwindigkeit und Winkel). Mit einer vernünftigen
Namenswahl (z.B.: v und w) wär das nicht passiert.

Desweiteren noch ein paar Hinweise:

- Warum machst du dir die Mühe, die Größe und Position aller Komponenten selbst zu setzen
anstatt Layoutmanager zu benutzen?
- Woher weiß man, welcher Slider was verändert?
- Es wäre hilfreich die aktuellen Werte (Geschwindigkeit, Winkel) irgendwo anzuzeigen
- Da die Variablen x, y, vx und vy nur innerhalb der Zeichenroutine gebraucht werden,
sollten sie auch dahin verlagert werden. dt kann eine Instanzvariable bleiben, da
diese ja die Zeichenroutine steuert.
- Klassennamen sollten groß geschrieben werden
 

Kussefar

Mitglied
na das ist doch mal ne gute Antowrt ... ;)

Erstmal danke und mal schaun was ich mit den Tips anfangen kann ....

Was für ein LayoutManager würde sich denn eignen? Kenn mich da nicht so aus...

achso und was meinst du mit paintComponent?
 

Leroy42

Top Contributor
Du mußt paintComponent statt paint überschreiben
Code:
  public void paintComponent(Graphics g) {
      super.paintComponent(g);
      g.drawLine(0,0,0,getHeight());
      ...

Das BorderLayout. Da es default ist mußt du es nicht extra setzen.
Im CENTER-Bereich kommt dein Zeichenpanel.
Im NORTH-(oder, je nach Geschmack, SOUTH)-Bereich deine Steuerelemente,
die widerum in ein FlowLayout gepackt werden. Also

Code:
JPanel north = new JPanel();
north.add(Winkel);
north.add(Geschwindigkeit);
north.add(jButton1);

cp.add(north, BorderLayout.NORTH);
cp.add(jPanel1, BorderLayout.CENTER);
und kein Aufruf von cp.setLayout(null) mehr.

Dann kannst du auch das setVisible(false) weglassen und den User
damit nicht mehr ärgern. :wink:

Übrigens: Warum benutzt du so aussageunkräftige Bezeichnungen
wie jPanel1 und jButton1? Nenne sie doch so, daß man ihnen gleich
ansieht, was sie darstellen.
 

Kussefar

Mitglied
das mit den scheiss bezeichnungen stimmt schon ... liegt aber daran, dass es ja nur so ein "Test-Prog" war und ich es mit nem Editor gemacht hat vo ich die sachen nur noch "reinsetzen" muss (wie den JSlider) und der Editor dann denn Quellcode direkt selbst schriebt deswgeen jButton1 und so ...
Wenn ich das selbst geschrieben hätte, würde ich andere Namen nehmen :wink:

Was ist denn das paintComponent ? Hab das noch nie gehört, bin ja auch noch ein "kleiner" Anfänger

:cool:

Ps.: Ich weiss dass es scheisse ist wenn der Editor den Code selbst schreibt (is ja auch langweilig und kein richtiges Proggn mehr :wink: )
 

Leroy42

Top Contributor
Der Ablauf des Zeichnens unter Swing ist folgendermaßen.

Du (oder das System) ruft repaint() auf. Dadurch weiß der EventDispatchThread
daß die Komponente, sobald der EDT wieder dran ist eine Neuzeichnung veranlaßt.

Dazu ruft der EDT erst die Methode update auf. Diese sorgt z.B. dafür, daß von dir
gesetzte Hintergrundfarben gezeichnet werden (Dein Gelb).

Dann wird die Methode paint() vom EDT aufgerufen. Diese zeichnet die eigentliche Komponente
und Sachen wie z.B. Rahmen.

Dann erfolgt der Aufruf von paintComponent(Graphics g) und in
Swing sollte nur diese überschrieben werden, nicht paint wie im AWT
 

Kussefar

Mitglied
alles klaro.

also ich muss jetzt so ein "Projekt" machen , was je nach asuwahl einen schiefen wurf , planetenbewegungen oder den freien Fall simulieren soll.

Kannst du mir da vllt nen Tipp geben wie ich das Graphisch gut darstellen kann...
... hab mir das so gedacht mit nem JTree oder JMenu oder nem popup wo ich dann halt auswählen kann was er simulieren soll

mfg maddin
 

Kussefar

Mitglied
also das hat jetzt recht gut gefuntzt ...

aber jetzt nochma ne Frage ... Wie bekomm ich den "schiefen wurf" in ein panel rein, welches ich dann durch das BorderLayout in die mitte setzen will...?

hier der code:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
  *
  * <Beschreibung>
  *
  * @version 1.0 vom 07.05.2006
  * @author  Das ist die Vorlage
  */

public class Schiefer_Wurf extends JFrame {
  // Anfang Variablen
  Graphics g;
  double v=3;
  int w=1;
  double vy = v * Math.sin(w*Math.PI/180);
  double vx = v * Math.cos(w*Math.PI/180);
  
  private JButton knopf = new JButton();
  private JSlider winkel = new JSlider();
  private JSlider geschw = new JSlider();
  JPanel north = new JPanel();
  JPanel zeichen_panel = new JPanel();

  // Ende Variablen

  public Schiefer_Wurf (String title) {
    // Frame-Initialisierung
    super (title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 800;
    int frameHeight = 800;
    setSize(frameWidth, frameHeight);
    Container cp = getContentPane();
    //cp.setLayout(null);

    // Anfang Komponenten
    g=getGraphics();


    knopf.setText("zeichnen");
    winkel.setMaximum(90);
    geschw.setMaximum(5);
    geschw.setValue(3);
    north.add(knopf);
    north.add(winkel);
    north.add(geschw);
    cp.add(north,BorderLayout.NORTH);
    cp.add(zeichen_panel,BorderLayout.CENTER);
    knopf.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        knopfActionPerformed(evt);
      }
    });

    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Ereignisprozeduren
  public void knopfActionPerformed(ActionEvent evt) {
        w = winkel.getValue();
        v = geschw.getValue();
        vy = v * Math.sin(w*Math.PI/180);
        vx = v * Math.cos(w*Math.PI/180);
        Kugel a = new Kugel(getGraphics(),vx,-vy);
        a.start();



  }

  // Ende Ereignisprozeduren

  public static void main(String[] args) {
    new Schiefer_Wurf("Schiefer_Wurf");
  }
}

class Kugel extends Thread {
    Graphics stift;
    int d;
    double vx, vy;
    public Kugel(Graphics g, double vx, double vy) {
        stift = g;
        d = 10;
        this.vx = vx;
        this.vy = vy;
    }
    void zeitschleife() {
        try { Thread.sleep(10); }
        catch(InterruptedException e) { return; }
    }
    public void run() {
        double x=10; double y=379;
        while (y<380){
            stift.setColor(Color.LIGHT_GRAY);
            stift.fillOval((int)x, (int)y, d, d);
            y=y+vy;
            vy=vy+0.02;
            x=x+vx;
            stift.setColor(Color.BLACK);
            stift.fillOval((int)x, (int)y, d, d);
            zeitschleife();
        }
    }
}
 

Leroy42

Top Contributor
Ich habe den Code nur überflogen...

Aber du hast doch bereits ein JPanel north. Bau dir einen JPanel center und
übergib dessen getGraphics() deinem Kugel-Thread.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
M Brauche Hilfe bei Quellcodeverständnis Allgemeine Java-Themen 4
D Brauche Hilfe bei Rechnung (Exponentiation) Allgemeine Java-Themen 12
F Brauche Hilfe bei Java Allgemeine Java-Themen 6
C Brauche Hilfe mit Modulo Strategie Allgemeine Java-Themen 2
S Brauche Hilfe: Prüfungsaufgabe Java Allgemeine Java-Themen 8
S brauche Hilfe für ssh connection in java Allgemeine Java-Themen 6
S Brauche Hilfe bei Planung für JAVA-Programm Allgemeine Java-Themen 3
Developer_X Brauche Hilfe bei meinem kleinen hilfsprogramm Allgemeine Java-Themen 4
Developer_X Bound Animation - Brauche Hilfe Allgemeine Java-Themen 3
D Brauche mal Hilfe bin noch nicht so fit Allgemeine Java-Themen 3
L Brauche Hilfe bei Memory Programmierung Allgemeine Java-Themen 2
N Brauche dringend Hilfe! Allgemeine Java-Themen 7
M brauche hilfe mit iReport Allgemeine Java-Themen 4
V Brauche dringend Hilfe. Object-handling Allgemeine Java-Themen 4
R Hilfe - brauche ein Applet zu Demozwecken Allgemeine Java-Themen 10
J Brauche Hilfe zum ToolKit Allgemeine Java-Themen 15
T Brauche Hilfe! Allgemeine Java-Themen 10
G Brauche hilfe bei JMF: Wie eigene Streaming Data Source! Allgemeine Java-Themen 4
N int[] referenzen in ein Array packen, brauche Hilfe. Allgemeine Java-Themen 7
T Brauche Hilfe bei ClassLoader Allgemeine Java-Themen 2
G Brauche Hilfe bei Erstellung eines Musters! Allgemeine Java-Themen 3
S Static + Speicher + Bytecode etc. Brauche HILFE :/ Allgemeine Java-Themen 11
Robert Zenz Ich brauche bitte mal kurz einen Sanity/Reality-Check betreffend Tests. Allgemeine Java-Themen 9
_user_q Was brauche ich, um eine eigene "Search for updates"-Funktion einzubauen? Allgemeine Java-Themen 1
MoxxiManagarm Ich brauche einen smarten Ansatz Allgemeine Java-Themen 23
Thallius Unfassbarer Fehler. Brauche Ideen zum Debuggen Allgemeine Java-Themen 9
J Unvorhersehbares Verhalten - benutze ich die falsche Bedingungsprüfung oder brauche ich Threads? Allgemeine Java-Themen 12
H NetBeans geotools 15 oder 16 - welche Abhängingkeiten gibt es? Welche Jars brauche ich? Allgemeine Java-Themen 4
S Best Practice Brauche eine Idee für eine Java Projekt! Allgemeine Java-Themen 11
Fu3L Input/Output Brauche Rat bei effizienter Speicherung großer Datenmengen Allgemeine Java-Themen 21
T Ich brauche gute Quellen Allgemeine Java-Themen 13
hdi GUI: Ich brauche ein Textfeld mit "Sperre" Allgemeine Java-Themen 12
E brauche schnell Ausführbare Datei Allgemeine Java-Themen 4
M brauche grösseren Datentyp Allgemeine Java-Themen 5
S brauche dringend help bei einem projekt (Römisch-dezimal) Allgemeine Java-Themen 3
M Brauche einen Tipp, bei einer Aufgabe ! Allgemeine Java-Themen 3
P Java Acces Datenbank Problem ! (Brauche eine Abfrage) Allgemeine Java-Themen 5
E Ich brauche euren Code Allgemeine Java-Themen 12
S Ich Brauche Bei Einen Bot Hile :( Allgemeine Java-Themen 2
V Brauche Beratung in Sachen Java+Datenbank+Web Allgemeine Java-Themen 8
M Schätzfrage: Wieviel Prozessorpower brauche ich? Allgemeine Java-Themen 27
T Lizenzfrage - brauche Infos Allgemeine Java-Themen 34
T Autostart Programm - brauche Tipps Allgemeine Java-Themen 5
A brauche schnelle antwort wg. schleife! Allgemeine Java-Themen 3
K Brauche euren Lösungsweg zu einem File/IO-Beispiel Allgemeine Java-Themen 23
G packageproblem? brauche rat! Allgemeine Java-Themen 2
S brauche Orientierungshilfe in Java Allgemeine Java-Themen 5
Z Was brauche ich für Servlets? Allgemeine Java-Themen 17
W Hilfe bei Methode Allgemeine Java-Themen 14
M Javascript Hilfe bei ToDoList? Allgemeine Java-Themen 1
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
T Hilfe bei negation von suchabfrage Allgemeine Java-Themen 2
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
N Hilfe bei RegEx benötigt Allgemeine Java-Themen 3
A Hilfe beim Verständnis Allgemeine Java-Themen 16
V Hilfe mit Java Code Allgemeine Java-Themen 4
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
alinakeineAhnungv Hilfe bei einem Straßenbahn-Projekt von mir Allgemeine Java-Themen 18
Aboya Kugel mit Hilfe von Dreiecken rekursiv zeichnen Allgemeine Java-Themen 2
K Anzeigemöglichkeit von Bildern in JavaFX mit Hilfe von MongoDB GridFS Allgemeine Java-Themen 0
A Preisberechnung, Hilfe Allgemeine Java-Themen 4
M Bräuchte Hilfe bei der Aufgabe Allgemeine Java-Themen 1
s_1895 Hilfe bei Java Tic Tac Toe Allgemeine Java-Themen 8
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
B Bei Email: FW / AW... - Hilfe bei String suche Allgemeine Java-Themen 21
U Erste Schritte Hilfe bei simplem Glücsspiel in Java Allgemeine Java-Themen 4
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
K Objektorientierung, hilfe Allgemeine Java-Themen 9
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
D Hilfe bei Informatik Hausaufgaben Allgemeine Java-Themen 30
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
F NetBeans Hilfe!!! Allgemeine Java-Themen 23
H Schiffe versenken JButton Schiffe mit GUI verbinden Hilfe! Allgemeine Java-Themen 2
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
S GetMethode erstellen mit Hilfe von Parametern Allgemeine Java-Themen 9
B Hilfe bei Übungsblätter Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
C Hilfe Bei Vegas Slide Allgemeine Java-Themen 0
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
Ice4P4rty Hilfe Bei Promillerechner Allgemeine Java-Themen 9
C Atfx mit Hilfe von OpenAtfx auslesen Allgemeine Java-Themen 1
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
G Hilfe bei Projektarbeit Allgemeine Java-Themen 5
GenerationLost Input/Output Custom Serialization - hilfe bei Realisierung Allgemeine Java-Themen 8
J Hilfe!!! Ausbildung Allgemeine Java-Themen 14
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
B Swing Hilfe bei Abfrage von Benutzernamen und Passwort Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
S Hilfe bei Gui Allgemeine Java-Themen 3
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
GRAZZ0R Hilfe zum Spiel Mensch ärger dich nicht Allgemeine Java-Themen 1
C Hilfe bei den Ausgaben Allgemeine Java-Themen 4
K Hilfe bei GUI für Pizza-Service Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben