();
Rectangle2D rect ,
public void addSlice ( dobbelt værdi , Color farve)
public void draw ( Graphics2D g, Rectangle2D område)
public void init ();
@ Overridepublic void paint ( Graphics g )
public static void main ( String [] args )
/*** Dette repræsenterer data for en bid af kagen . * /private class PieSlice
}
resten af tutorial vil dække udfylde koden for hver metode beskrevet i ovenstående kode .
4
Gennemføre PieSlice private klasse. Dette vil holde dataene for hver " skive " af cirkeldiagrammet . Indsæt følgende kode : . .
Private class PieSlice { dobbelt værdi , Color farve
/*** Den del af kagen * @ param værdi Størrelsen af udsnittet * @ param farve farven ønskes for den skive * /public PieSlice ( dobbelt værdi , Color farve) { this.color = farve this.value = værdi ;} .
}
5
gennemføre addSlice metoden ved at indsætte følgende kode : Hej
public void addSlice ( dobbelt værdi , Color farve) { slices.add (ny PieSlice (værdi, farve) );}
bare skaber en ny PieSlice og føjer den til den skive listen ArrayList
6
Gennemføre init metode ved at indsætte følgende: .
public void init () {
dette . setSize ( 800.600 ), this.setVisible (sand ), rect = new Rectangle (100 , 100 , 600, 480 ),
};
7
Implement lodtrækningen metode indsætte følgende kode : Hej
public void draw ( Graphics2D g, Rectangle2D område) { double pieSize = 0; for ( PieSlice slice : skiver ) { pieSize + = slice.value ;} double CurrentValue = 0; int startAngle = 0; int arcAngle = 0; for ( PieSlice slice : skiver ) { startAngle = ( int) ( CurrentValue * 360 /pieSize ) arcAngle = ( int) ( slice.value * 360 /pieSize )
//Hvis det er den sidste skive , gør dette for at sikre, at der ikke er nogen gaps.if ( slice.equals ( slices.get ( slices.size () -1) )) { arcAngle = 360 - startAngle ;}
< p> g.setColor ( slice.color ), g.fillArc ( ( int ) area.getMinX () ( int ) area.getMinY () ( int ) area.getWidth () ( int ) area.getHeight () , startAngle , arcAngle ) CurrentValue + = slice.value ;}
}
p Dette er arbejdshesten af programmet. Det går gennem hver bid af cirkeldiagram og trækker en farvet bue svarende til sin andel af kagen.
8
Gennemføre malingen metode, som PieChart klasse vil få fra JFrame superklassen . Alt det gør, er kalde draw metode hver gang en opdatering er nødvendig : Hej
@ Overridepublic void paint ( Graphics g ) { tegne ( ( Graphics2D ) this.getGraphics () , rect );}
< br > 9
Opret en vigtigste metode til at teste klassen og sikre, at det virker:
offentlige static void main ( String [] args ) { PieChart diagram = new PieChart (); chart.init (); < br >
chart.addSlice ( 10 , Color.RED ) chart.addSlice ( 7 Color.BLUE ) chart.addSlice ( 3 Color.GREEN ) chart.addSlice ( 15 , Color.ORANGE ) ; < br >
}