2013-04-17 3 views
1

У меня возникли проблемы. Я пытаюсь создать гистограмму с arraylist, который вводит пользователь. Я могу создать один бар, но создаст только один бар. Мне нужно все входные данные массива для создания панели.ArrayList Rectangle

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Rectangle; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Random; 
import org.omg.PortableServer.CurrentOperations; 


public class BarChart { 

private double width; 
private double height; 
private ArrayList<Double> values; 
Random generator = new Random(); 

public BarChart(double iniwidth, double iniheight) { 
    width = iniwidth; 
    height = iniheight; 
    values = new ArrayList<Double>(); 
    generator = new Random(); 
    } 

public void add (double input) { 
    values.add(input); 
} 

public void draw (Graphics g2) { 
    double max = Collections.max(values); 
    int xleft = 0; 
    for (int i = 0; i < values.size(); i++) 
    { 
     double barHeight= (max - height); 
     width = 50; 
     float r = generator.nextFloat(); 
     float g = generator.nextFloat(); 
     float b = generator.nextFloat(); 
     Color randomColor = new Color(r, g, b); 
     Rectangle bar = new Rectangle ((int) (xleft + width), (int) height); 
     g2.setColor(randomColor); 
     ((Graphics2D) g2).fill(bar); 
     g2.setColor(Color.BLACK); 
     ((Graphics2D) g2).draw(bar); 

    } 
    System.out.println(Collections.max(values)); 
} 

}

ответ

4

Все ваши бары имеют один и тот же х местоположение, так что они рисуют над собой. xLeft всегда 0. Вероятно, вы забыли увеличить его.

Например:

xLeft += width;