();
Rectangle2D rect ;
public void addSlice ( dobbel verdi , Color farge)
public void uavgjort ( Graphics2D g, Rectangle2D område)
public void init ();
@ Overridepublic void paint (Graphics g )
public static void main ( String [] args )
/*** Dette representerer dataene for en bit av kaken . * /private class PieSlice
}
resten av opplæringen vil dekke fylling i koden for hver metode beskrevet i koden ovenfor .
4
Gjennomføre PieSlice privat klasse . Dette vil holde dataene for hver " skive " av kakediagram . Lim inn følgende kode : . .
Private class PieSlice {double verdi; Color farge ;
/*** Den del av kaken * @ param verdi Størrelsen på skive * @ param fargen ønsket for stykket * /public PieSlice ( dobbel verdi , Color farge) { this.color = farge, this.value = verdi ;} .
}
5
gjennomføre addSlice metoden ved å lime inn følgende kode :
public void addSlice ( dobbel verdi , Color farge) { slices.add ( ny PieSlice (verdi, farge )); }
bare skaper en ny PieSlice og legger det til stykket liste ArrayList
6
Gjennomføre init metoden ved å lime inn følgende: .
public void init ( ) {
dette . setSize ( 800600 ) ; this.setVisible ( true); rect = new rektangel ( 100 , 100 , 600 , 480 ) ;
};
7
Implementere trekningen metoden lime inn følgende kode :
public void uavgjort ( Graphics2D g, Rectangle2D område) {double pieSize = 0; for ( PieSlice skive : skiver ) { pieSize + = slice.value ;} dobbel CurrentValue = 0 ; int startAngle = 0 ; int arcAngle = 0; for ( PieSlice skive : skiver ) { startAngle = ( int ) ( CurrentValue * 360 /pieSize ) ; arcAngle = ( int ) ( slice.value * 360 /pieSize ) ;
//Hvis dette er det siste stykket , gjør dette for å sikre at det ikke 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 arbeidshesten av programmet. Det går gjennom hver bit av kaken diagrammet og trekker en farget bue som tilsvarer sin andel av kaken .
8
Gjennomføre maling metode som PieChart klassen vil få fra JFrame superklassen . Alt den gjør er å ringe trekningen metoden hver gang en oppdatering er nødvendig : en
@ Overridepublic void paint (Graphics g ) { tegne ( ( Graphics2D ) this.getGraphics ( ) , rect ) ;}
9
Lag en viktig metode for å teste klassen og sikre at det fungerer :
public static void main ( String [] args ) { PieChart diagram = new PieChart (); chart.init ();
chart.addSlice ( 10 , Color.RED ) ; chart.addSlice ( 7 , Color.BLUE ) ; chart.addSlice ( 3 , Color.GREEN ) ; chart.addSlice ( 15 , Color.ORANGE );
}