2016-04-09 33 views
0

Java Swing'de yeni başlayan biriyim. Applet'te günahın (x) grafiğini çizmeye çalışıyordum. Uygulamamın neden her zaman ekseni çizdiğime şaşırıyorum. burada benim kodudur: ""Neden uygulama trigonometrik fonksiyonun grafiğini doğru çizmiyor?

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))); 
    } 
} 
} 

I (x) String ile günahın 180 noktaları çizmek ediyorum , ama benim applet tek bir arsa göstermedi.

[Takip veya gereken herhangi bir iyi uygulama bana iyi kitaplığı (JAR) orada önermek ise Belirtiniz için çizim grafikleri]

+0

1) Neden bir uygulamacığı kodlayın? Bunu belirten öğretmene bağlıysa, lütfen bunları [Neden CS öğreticilerinin ** Java uygulamalarını öğretmeyi ** durdurması gerektiğini] belirtin (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop öğretim-java uygulamaları /). 2) [Java Plugin desteğini kullanımdan kaldırılmış] (http://www.gizmodo.com.au/2016/01/rest-in-hell-java-plug-in/) ve [Plugin-Free Web'e Geçme] 'ye bakın. https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free). .. –

+0

.. 3) Neden AWT kullanıyorsunuz? Bileşenleri Swing lehine kullanarak AWT'yi terk etmek için birçok iyi sebepten dolayı [bu yanıt] 'a bakın (http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978). –

+0

Swing kullanmamı önerir misin? – 000

cevap

1

Aslında çizer bir grafiktir.

değerleri sinüs -1 ve +1 arasında olan ve radyan değerleri π + ve -π between0, yani grafik bu koordinatlara çekildiği için. Bu çizgiye

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

: Eğer bu satırı değiştirirseniz

(. Eğer yarım grafik için kod yazdım çünkü)

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

Yarım grafik görürsünüz

Burada:

  • Ben ekleyin (appletSize.height/2) ve (appletSize.width/2) değerlerini ekranın ortasına getirmek için (grafikte)
  • Grafiği büyütmek için onları 50 ile çarpıyorum, başka bir deyişle, grafik anlamak için çok küçük.
+0

* "Ben (appletSize.height/2) değerlerini ekranın merkezine getirmek için (grafik üzerinde) ekleyin" * Bir "AffineTransform" işe yarar güzelce burada, eksenlerin (eksenin çoğunun) hareket etmesi ve arsa ölçeklenmesi için. –

+0

çok teşekkürler. – 000

+0

@AndrewThompson Çalıştı Aslında uygulama programlamada çok fazla değilim, bu yüzden bu sınıfları bilmiyorum. – Hackerdarshi