( ) ;
Rectangle2D rect ,
public void addSlice ( dubbla värde , färg ) katalog
public void draw ( Graphics2D g , Rectangle2D område ) katalog
public void init ( ) ;
@ Overridepublic void paint ( Graphics g ) katalog
public static void main ( String [] args ) katalog
/*** Detta representerar data för en del av kakan . * /private class PieSlice
}
resten av handledning kommer täcka fylla i koden för varje metod som beskrivs i ovanstående kod .
4
Implementera PieSlice privat klass . Detta kommer att hålla data för varje " slice " av cirkeldiagram . Klistra in följande kod : . .
Privat klass PieSlice { double värde , färg ,
/*** Den del av kakan * @ param värde Storleken på skiva * @ param färgen önskas för slice * /public PieSlice ( dubbla värde , färg ) { this.color = färg , this.value = value ;} .
}
5
genomföra addSlice metoden genom att klistra in följande kod :
public void addSlice ( dubbla värde , färg ) { slices.add ( nytt PieSlice ( värde , färg ) ) ;}
bara skapar en ny PieSlice och lägger till den skivan listan ArrayList
6
Genomföra init metoden genom att klistra in följande : .
public void init ( ) {
detta . setSize ( 800.600 ) , this.setVisible ( true ) ; rect = new Rectangle ( 100 , 100 , 600 , 480 ) ;
};
7
Genomföra lottningen metod klistra in följande kod :
public void draw ( Graphics2D g , Rectangle2D område ) { double pieSize = 0 ; för ( PieSlice slice : skivor ) { pieSize + = slice.value ; } double CurrentValue = 0 ; int startAngle = 0 ; int arcAngle = 0 ; för ( PieSlice slice : skivor ) { startAngle = ( int ) ( CurrentValue * 360 /pieSize ) , arcAngle = ( int ) ( slice.value * 360 /pieSize ) ;
//Om det här är den sista skivan , gör detta för att säkerställa att det inte finns någon gaps.if ( slice.equals ( slices.get ( slices.size ( ) -1 ) ) ) { arcAngle = 360 - startAngle ;}
g.setColor ( slice.color ) , g.fillArc ( ( int ) area.getMinX ( ) , ( int ) area.getMinY ( ) , ( int ) area.getWidth ( ) , ( int ) area.getHeight ( ) , startAngle , arcAngle ) ; CurrentValue + = slice.value ; }
}
Detta är arbetshästen i programmet . Den går igenom varje del av kakan diagrammet och drar en färgad båge som motsvarar dess andel av kakan .
8
Genomföra paint metoden att PieChart klassen kommer att få från JFrame superklassen . Allt det gör är att anropa draw metoden varje gång en uppdatering behövs :
@ Overridepublic void paint ( Graphics g ) { rita ( ( Graphics2D ) this.getGraphics ( ) , rect ) ; }
9
Skapa en huvudsaklig metod för att testa klassen och se till att det fungerar :
public void main ( String [] args ) { PieChart diagram = ny PieChart ( ) ; chart.init ( ) ;
chart.addSlice ( 10 , Color.RED ); chart.addSlice ( 7 , Color.BLUE ) ; chart.addSlice ( 3 , Color.GREEN ); chart.addSlice ( 15 , Color.ORANGE ),
} Addera