自己写了个饼图小程序,运行时给了3个参数,但是运行结果是空白,请高手帮忙看一下问题出在哪里?package piegraph;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Arc2D;
import javax.swing.*;/**
*
* @author Administrator
*/
public class Pie extends JFrame{
public Pie(String[] str){
super("Pie");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(200, 200, 480, 300);
PiePanel pie = new PiePanel(str);
add(pie);
setVisible(true);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
if(args.length > 0){
Pie pie = new Pie(args);
}}
}
class PiePanel extends JPanel{ String[] str;
public PiePanel(String[] str) {
this.str = str;
} @Override
protected void paintComponent(Graphics g) {
Graphics2D comp2D = (Graphics2D)g;
comp2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
BasicStroke pen = new BasicStroke();
comp2D.setStroke(pen);
Color[] color = new Color[str.length];
for(int i = 0;i < str.length;i++){
color[i] = new Color(i*10,255-i*10,i*10);
}
int[] str1 = new int[str.length];
int num = 0;
for(int i = 0;i < str.length; i++){
str1[i] = Integer.parseInt(str[i]);
num +=str1[i];
}
float[] str2 = new float[str.length];
for(int i = 0;i < str.length;i++){
str2[i] = str1[i]/num;
}
int j = 0;
for(int i = 0 ;i < str.length; i++){
Arc2D.Float a = new Arc2D.Float(100,100,120,120,j,str2[i]*360,Arc2D.PIE);
j += str2[i]*360;
comp2D.setColor(color[i]);
comp2D.fill(a);
}
}
}
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Arc2D;
import javax.swing.*;/**
*
* @author Administrator
*/
public class Pie extends JFrame{
public Pie(String[] str){
super("Pie");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(200, 200, 480, 300);
PiePanel pie = new PiePanel(str);
add(pie);
setVisible(true);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
if(args.length > 0){
Pie pie = new Pie(args);
}}
}
class PiePanel extends JPanel{ String[] str;
public PiePanel(String[] str) {
this.str = str;
} @Override
protected void paintComponent(Graphics g) {
Graphics2D comp2D = (Graphics2D)g;
comp2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
BasicStroke pen = new BasicStroke();
comp2D.setStroke(pen);
Color[] color = new Color[str.length];
for(int i = 0;i < str.length;i++){
color[i] = new Color(i*10,255-i*10,i*10);
}
int[] str1 = new int[str.length];
int num = 0;
for(int i = 0;i < str.length; i++){
str1[i] = Integer.parseInt(str[i]);
num +=str1[i];
}
float[] str2 = new float[str.length];
for(int i = 0;i < str.length;i++){
str2[i] = str1[i]/num;
}
int j = 0;
for(int i = 0 ;i < str.length; i++){
Arc2D.Float a = new Arc2D.Float(100,100,120,120,j,str2[i]*360,Arc2D.PIE);
j += str2[i]*360;
comp2D.setColor(color[i]);
comp2D.fill(a);
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货