2016-04-09 15 views
0

Ich bin ein Anfänger in Java Swing. Ich habe versucht, den Graphen von sin (x) im Applet zu zeichnen. Ich bin überrascht, warum Applet immer nur meine Achse zeichnet, nicht meine Grafik? hier ist mein Code: ""Warum applet Graph der trigonometrischen Funktion nicht korrekt gezeichnet?

import java.applet.Applet; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 

public class NewApplet extends Applet 
{ 

    public void init() 
    { 
     // TODO start asynchronous download of heavy resources 
    } 
    public void paint(Graphics g) 
    { 
    Graphics2D g2 = (Graphics2D) g; 
    //get dimension 
    Dimension appletSize = this.getSize(); 
    // make the applet empty at start 
    g2.setBackground(Color.white); 
    g2.setColor(Color.white); 
    g2.fillRect(0, 0, appletSize.width, appletSize.height); 
    //now draw all you need 
    g2.setColor(Color.red); 
    //x axis 
    g2.drawLine(0, appletSize.height/2, appletSize.width, appletSize.height/2); 
    //y axis 
    g2.drawLine(appletSize.width/2, 0, appletSize.width/2, appletSize.height); 
    //function 
    g2.setColor(Color.black); 
    for(int k=0; k<=180; k++) 
    { 
     g2.drawString(".", (float) Math.toRadians(k), (float) Math.sin(Math.toRadians(k))); 
    } 
} 
} 

Ich Plotten 180 Punkte von sin (x) mit String , aber Mein Applet zeigte keinen einzelnen Plot. Warum?

[erwähnen, wenn es eine gute Praxis, die ich folgen soll oder mir vorschlägt jede gute Bibliothek (JAR) für das Zeichnen von Grafiken]

+0

1) Warum ein Applet codieren? Wenn es aufgrund der Angabe des Lehrers geschieht, verweisen Sie bitte auf [Warum CS-Lehrer ** aufhören sollten ** Java-Applets zu unterrichten] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop-teaching-Java-Applets /). 2) Siehe [Java Plugin-Unterstützung nicht mehr unterstützt] (http://www.gizmodo.com.au/2016/01/rest-in-hell-java-plug-in/) und [Wechsel zu einem Plugin-freien Web] (https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free). .. –

+0

.. 3) Warum AWT verwenden? Siehe [diese Antwort] (http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978) aus vielen guten Gründen, AWT mit Komponenten zugunsten von Swing zu verlassen. –

+0

Schlägst du mir vor Swing zu benutzen? – 000

Antwort

1

Es tatsächlich zieht eine grafische Darstellung.

Da Werte Sinus- zwischen -1 und +1, und die Werte sind radian between0 + π und -π, so dass der Graph wird an diesen Koordinaten gezeichnet.

Wenn Sie diese Zeile:

g2.drawString(".", (float) Math.toRadians(k), (float) Math.sin(Math.toRadians(k))); 

zu dieser Zeile: (., Da Sie den Code für die Hälfte der Grafik geschrieben haben)

g2.drawString(".", (appletSize.height/2)+(float) Math.toRadians(k)*50, (appletSize.width/2)+(float) Math.sin(Math.toRadians(k))*50); 

Sie Hälfte die Grafik sehen

Hier:

  • Ich fügehinzuund (appletSize.width/2) zu den Werten, um sie in die Mitte des Bildschirms zu bringen (in der Grafik)
  • Ich multipliziere sie mit 50, um das Diagramm groß zu machen, sonst ist das Diagramm zu klein, um zu verstehen.
+0

* "Ich füge (appletSize.height/2) zu den Werten, um sie in die Mitte des Bildschirms (in der Grafik)" * Eine 'AffineTransform' würde funktionieren schön hier, für die Achsen (? Plural der Achse) Verschieben und skalieren die Handlung. –

+0

vielen dank. Es funktionierte – 000

+0

@AndrewThompson Eigentlich bin ich nicht sehr in Applet-Programmierung, also weiß ich nicht über diese Klassen. – Hackerdarshi