Tortendiagramm zeichnen

Comyu

Neues Mitglied
Hallo, wir sind in der Schule gerade auf objektorentiertes Programmieren umgestiegen.
Ich möchte jetzt ein Tortendiagramm zeichnen
Das ist der Code. Allerdings geht er nicht, bitte helft mir
Bei allen werten angegeben fehlt ein abschnitt, und sowas wie 50 zu 50 geht nur wenn man es nacheinander eingibt
Wir sind in der Klasse Tortendiagramm, Jframe
g.setColor(Color.red);
endwert = (wert[0] * 360)/100;
g.fillArc(breite / 2, this.hoehe / 2, 199, 199, 0, endwert);
g.setColor(Color.green);
startwert = endwert;
endwert = (wert[1] * 360)/100;
g.fillArc(breite / 2, this.hoehe / 2, 199, 199, startwert, endwert);
g.setColor(Color.black);
startwert = endwert;
endwert =( wert[2] * 360)/100;
g.fillArc(breite / 2, this.hoehe / 2, 199, 199, startwert, endwert);
g.setColor(Color.white);
startwert = endwert;
endwert = (wert[3] * 360)/100;
g.fillArc(breite / 2, this.hoehe / 2, 199, 199, startwert, endwert);
g.setColor(Color.blue);
startwert = endwert;
endwert = (wert[4] * 360)/100;
g.fillArc(breite / 2, this.hoehe / 2, 199, 199, startwert, endwert);
 
Wie oben gesagt, wenn ich 5 werte eingebe werden nur 4 gezeichnet, wenn ich zb 0 50 0 50 eingebe wird garnichts gezeichnet usw... (keine error)
Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package tortendiagramm;

import java.awt.*;

/**
*
* @author it140009
*/
public class Tortendiagramm extends Frame {

    private int hoehe;
    private int[] wert;
    private int breite;

    public int[] getWert() {
        return wert;
    }

    public void setWert(int[] wert) {
        this.wert = wert;
    }

    public Tortendiagramm(int[] array) {

        super("add your name here");

        // Ermöglicht das Schließen des Frames
        addWindowListener(new java.awt.event.WindowAdapter() {
            @Override
            public void windowClosing(java.awt.event.WindowEvent evt) {
                System.exit(0);
            }
        });

        // Enige Fenstereigenschaften setzen
        this.setSize(400, 400);
        this.setBackground(Color.LIGHT_GRAY);
        this.setForeground(Color.BLACK);
        this.toFront();
        getGrosse();
        setWert(array);
        // Fenster anzeigen
        this.setVisible(true);
        this.toFront();
    }

    public void getGrosse() {
        hoehe = this.getSize().height - this.getInsets().top;
        breite = this.getSize().width - this.getInsets().left;
    }

    /**
     * Stellt das Fenster dar.
     * <p>
     * Diese Methode wird aufgerufen, wann immer auch das Fenster oder Teile
     * davon neu gezeichnet werden müssen. Wann das der Fall ist, unterliegt
     * meist nicht unserer Kontrolle (z.B. Wegschieben eines überdeckenden
     * Fensters) - kann aber auch von uns ausgelöst werden (repaint()).<br>
     * Es ist somit sinnvoll, hier jene Funktionalität zu verpacken, die das
     * Aussehen des Fensters bestimmt.
     * <p>
     * @param g
     */
    @Override
    public void paint(Graphics g) {
        int hoehe;
        int max = 0;
        int startwert;
        int endwert;
        int balkenbreite;
        for (int i = 0; i < 5; i++) {
            if (wert[i] > max) {
                max = wert[i];
            }
        }
        //Etwas umständlich geschrieben damit man besser Debuggen kann
        g.setColor(Color.red);
        endwert = (wert[0] * 360)/100;
        g.fillArc(breite / 2, this.hoehe / 2, 199, 199, 0, endwert);
        g.setColor(Color.green);
        startwert = endwert;
        endwert = (wert[1] * 360)/100;
        g.fillArc(breite / 2, this.hoehe / 2, 199, 199, startwert, endwert);
        g.setColor(Color.black);
        startwert = endwert;
         endwert =( wert[2] * 360)/100;
        g.fillArc(breite / 2, this.hoehe / 2, 199, 199, startwert, endwert);
        g.setColor(Color.white);
        startwert = endwert;
      endwert = (wert[3] * 360)/100;
        g.fillArc(breite / 2, this.hoehe / 2, 199, 199, startwert, endwert);
        g.setColor(Color.blue);
        startwert = endwert;
        endwert = (wert[4] * 360)/100;
        g.fillArc(breite / 2, this.hoehe / 2, 199, 199, startwert, endwert);

//x - the //x coordinate of the upper-left corner of the arc to be drawn.
        //y - the y coordinate of the upper-left corner of the arc to be drawn.
        //  width - the width of the arc to be drawn.
        //      height - the height of the arc to be drawn.
        //startAngle - the beginning angle.
//arcAngle - the angular extent of the arc, relative to the start angle.
    }
}
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben