2012-11-24 41 views
3

第一次海報很耐心。貼標x和y軸java gui

我試圖創建一個使用Java GUI的圖形計算器(是的,我知道有應用程序已經這樣做了。)我使用Graphics2D類,只是想知道如何我可以標記x和y軸。

這是我迄今爲止所寫的內容,它將繪製一個基本拋物線和x和y軸。另外如果有人能告訴我如何改變它,所以軸線更細,這將是驚人的!

在此先感謝! -Evan

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.geom.Line2D; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class GraphWindow extends JPanel { 

    /** 
    * @param args 
    */ 
    public void paintComponent(Graphics g){ 
     super.paintComponent(g); 
     double max=16; 
     double min=0; 
     double x[]= {-4,-3,-2,-1,0,1,2,3,4}; 
     double y[]={16,9,4,1,0,1,4,9,16}; 

     Graphics2D g2=(Graphics2D)g; 
     setBackground(Color.WHITE); 
     g2.translate(getWidth()/2,getHeight()/2); 
     g2.scale(5.0, 5.0); 
     g2.draw(new Line2D.Double(-4*100,0,4*100,0)); 
     g2.draw(new Line2D.Double(0,min*100,0,-max*100)); 
     for(int i=0;i<x.length;i++){ 
      if(i+1<x.length){ 
      g2.setColor(Color.RED); 
      g2.draw(new Line2D.Double(x[i], -y[i], x[i+1], -y[i+1])); 
      } 
      else{ 
       break; 
      } 
     } 
+0

1)爲了更好地幫助越早,張貼[SSCCE(http://sscce.org/)。 2)*「還有,如果有人能告訴我如何改變它,所以軸線更細,這將是驚人的!」*'g2.scale(1.0,1.0);' –

回答

1

你可以使用Graphics.drawString()繪製兩個軸:

g.setColor(Color.black); 
g.setFont(new Font("SansSerif", Font.BOLD, 8)); 

g.drawString("X Axis", 30, 10); 

// rotate for Y axis 
g2.rotate(-Math.PI/2); 
g.drawString("Y Axis", 20, -8); 

Graphics2D旋轉繪製Y軸。請務必將此作爲最後套語句paintComponent以避免不得不重新旋轉Graphics2D

可以使用變得越來越薄線:

g2.scale(2.0, 2.0); 

參見:Graphics2D.scale()

+0

當我運行代碼時,它會經歷兩次,我不知道爲什麼。 –

+0

我也想讓軸標有數字I.E.如果x從-4到4我想在軸上顯示-4 -3 -2 -1 ...並使用類似於|的刻度標記,那麼我該如何完成此操作? –

+0

您將需要計算要顯示的滴答點數。您可以使用'g.drawLine'使用較短的行長。 – Reimeus