import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.widgets.Canvas;

public class BarDrawer extends Drawer {
	
	int[] mainArray;
	boolean setByGui = false;
	
	public BarDrawer(Canvas c) {
		super(c);
	}
	
	public void setArray(int[] i)
	{
		mainArray = i;
		setByGui = true;
	}
	
	private int maxInt(int[] array)
	{
		int max = 0;
		for(int i=0;i<array.length;i++)
		{
			max = Math.max(max, array[i]);
		}
		return max;
	}

	public void paintControl(PaintEvent event)
	{
		GC gc = event.gc;
		
		Color[] farbe = new Color[10];
		farbe[0] = dc.getDisplay().getSystemColor(SWT.COLOR_BLUE);
		farbe[1] = dc.getDisplay().getSystemColor(SWT.COLOR_CYAN);
		farbe[2] = dc.getDisplay().getSystemColor(SWT.COLOR_MAGENTA);
		farbe[3] = dc.getDisplay().getSystemColor(SWT.COLOR_RED);
		farbe[4] = dc.getDisplay().getSystemColor(SWT.COLOR_YELLOW);
		farbe[5] = dc.getDisplay().getSystemColor(SWT.COLOR_GREEN);
		farbe[6] = dc.getDisplay().getSystemColor(SWT.COLOR_BLACK);
		farbe[7] = dc.getDisplay().getSystemColor(SWT.COLOR_GRAY);
		farbe[8] = dc.getDisplay().getSystemColor(SWT.COLOR_DARK_RED);
		farbe[9] = dc.getDisplay().getSystemColor(SWT.COLOR_DARK_MAGENTA);
 		
		// Variablen definieren
		int i = 0;
		int balkenFarbeZufallszahl = (int)(Math.random()*9+1);
		
		int balkenHoehe = 0;
		int balkenBreite = 0;
		
		int feldgroesseX = dc.getSize().x;
		int feldgroesseY = dc.getSize().y;
		
		int balkenY = feldgroesseY;
		int balkenX = 1;
		
		int mainArrayMaximalerWert = maxInt(mainArray);
		
		while(i<mainArray.length)
		{
			if(mainArrayMaximalerWert > 565)
			{
				balkenHoehe = 565;
			}
			else
			{
				balkenHoehe = mainArrayMaximalerWert;
			}
			
			// Wenn die Breite des Fensters kleiner als 565 ist
			if(feldgroesseY <= 565)
			{
				balkenBreite = 1;
				balkenHoehe = (mainArray[i]);
			}
			else if(feldgroesseY >= 565)
			{
				balkenBreite = 1;
				balkenHoehe = feldgroesseY - mainArray[i] - 2;
			}
			
			// Farbe f&Atilde;&frac14;r den Balken setzen und den Balken zeichnen
			Color balkenfarbe = farbe[balkenFarbeZufallszahl];
			gc.setBackground(farbe[6]);
			gc.fillRectangle(balkenX, balkenY, balkenBreite, balkenHoehe);
			
			balkenX++;
			i++;

			System.out.println("Feld-Groesse Y: " + feldgroesseY + " ### Feld-Groesse X: " + feldgroesseX + " ### Array-Laenge: " + mainArray.length + " ### Array-Wert: " + i + " ### Breite: " + balkenBreite + " ### Hoehe: " + balkenHoehe);
			
		}	
	}

}

Add a code snippet to your website: www.paste.org