Come disegnare un grafico a torta in Java

December 19

Come disegnare un grafico a torta in Java


Anche se il linguaggio JavaFX contiene uno strumento per la facile creazione di grafici a torta, ordinario Java fornisce tale funzionalità facile. Invece, è necessario progettare la propria classe per la creazione di grafici a torta utilizzando il linguaggio Java. La chiave per il compito sarà la classe Graphics2D incorporato nella libreria standard di Java AWT.

istruzione

1 Creare una nuova classe. Se si utilizza un ambiente di sviluppo integrato (IDE), basta cliccare \ "File, \" \ "Nuova classe. \" Altrimenti, aprire il Blocco note o un editor di testo di scelta e salvare il file come \ "PieChart.java. \"

2 Importare le librerie di cui avrete bisogno nel vostro programma dalla libreria standard di Java incollando il seguente:

importazione java.awt.Color
ANDARE
java.awt.Graphics importazione
ANDARE
importazione java.awt.Graphics2D
ANDARE
importazione java.awt.Rectangle
ANDARE
importazione java.awt.geom.Rectangle2D
ANDARE
importazione java.util.ArrayList
ANDARE
import javax.swing.JFrame;

3 Incollare il seguente per creare la classe PieChart:

/ **

Disegna un grafico a torta.
* /
public class PieChart estende JFrame {

ArrayList <PieSlice> fette = new ArrayList <PieSlice> ()
ANDARE

Rectangle2D rect
ANDARE

addSlice public void (valore doppio, colore colore)

draw public void (Graphics2D g, zona Rectangle2D)

public void init ()
ANDARE

@Override
vernice public void (Graphics g)

void main (String [] args) public static

/ **

Questo rappresenta i dati di una fetta della torta.
* /
Classe PieSlice privato

}

Il resto del tutorial coprirà compilazione del codice per ogni metodo descritto nel codice di cui sopra.

4 Implementare la classe privata PieSlice. Questo conterrà i dati per ogni \ "fetta \" del grafico a torta. Incollare il seguente codice:

private class PieSlice {
double value

ANDARE

Color color

ANDARE

/**
* The slice of the pie.
* @param value The size of the slice.
* @param color The color desired for the slice.
*/
public PieSlice(double value, Color color) {
this.color = color

ANDARE

this.value = value

ANDARE

}

}

5 Implementare il metodo addSlice incollando il seguente codice:

public void addSlice(double value, Color color) {
slices.add(new PieSlice(value, color))

ANDARE

}

Questo crea solo un nuovo PieSlice e lo aggiunge alla lista di fette ArrayList.

6 Implementare il metodo init incollando il seguente:

public void init () {

this.setSize(800,600)

ANDARE

this.setVisible(true)

ANDARE

rect = new Rectangle(100, 100, 600, 480)

ANDARE

};

7 Implementare il metodo draw incollando il seguente codice:

public void draw(Graphics2D g, Rectangle2D area) {
double pieSize = 0

ANDARE

for (PieSlice slice : slices) {
pieSize += slice.value

ANDARE

}
double currentValue = 0

ANDARE

int startAngle = 0

ANDARE

int arcAngle = 0

ANDARE

for (PieSlice slice : slices) {
startAngle = (int)(currentValue * 360 / pieSize)

ANDARE

arcAngle = (int)(slice.value * 360 / pieSize)

ANDARE

// If this is the last slice, do this to ensure there is no gaps.
if (slice.equals(slices.get(slices.size()-1))) {
arcAngle = 360 - startAngle

ANDARE

}

g.setColor (slice.color)

ANDARE

g.fillArc((int)area.getMinX(), (int)area.getMinY(), (int)area.getWidth(), (int)area.getHeight(), startAngle, arcAngle)

ANDARE

currentValue += slice.value

ANDARE

}

}

Questo è il cavallo di battaglia del programma. Si passa attraverso ogni fetta del grafico a torta e disegna un arco colorato corrispondente alla sua quota della torta.

8 Implementare il metodo di vernice che la classe PieChart otterrà dalla superclasse JFrame. Tutto ciò che fa è chiamare il metodo draw ogni volta che è necessario un aggiornamento:

@Override
public void paint(Graphics g) {
draw((Graphics2D) this.getGraphics(), rect)

ANDARE

}

9 Creare un metodo principale per testare la classe e assicurarsi che funziona:

Main (string [] args) {public static void

PieChart chart = new PieChart()

ANDARE

chart.init()

ANDARE

chart.addSlice(10, Color.RED)

ANDARE

chart.addSlice(7, Color.BLUE)

ANDARE

chart.addSlice(3, Color.GREEN)

ANDARE

chart.addSlice(15, Color.ORANGE)

ANDARE

}