实现了一个简单的柱状图,希望对你有帮助
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class ColumnChart extends JFrame implements WindowFocusListener {
private static final long serialVersionUID = -5941316873191819372L;
private int[] datas;
public ColumnChart(int[] datas) {
super("柱图");
this.datas = datas;
setSize(480, 320);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
addWindowFocusListener(this);
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.GRAY);
g.drawLine(60, 50, 60, 270);
g.drawLine(60, 270, 400, 270);
int i;
g.drawString("100", 38, 70);
for (i=1; i<10; i++) {
g.drawString(i * 10 + "", 45, 270 - i * 20);
}
g.drawString("0", 50, 270);
for (i=0; i<10; i++) {
g.fillRect(i * 30 + 80, 270 - datas[i] * 2, 20, datas[i] * 2);
g.drawString(datas[i] + "", i * 30 + (datas[i] == 100 ? 80 : 83), 290);
}
}
@Override
public void windowGainedFocus(WindowEvent e) {
repaint();
}
@Override
public void windowLostFocus(WindowEvent e) {
}
public static void main(String[] args) {
String input;
String[] inputSplit;
int[] nums = new int[10];
int num;
int i = 10;
while (true) {
input = JOptionPane.showInputDialog(
"请输入10个10到100的整数,中间用逗号隔开:", "18,25,12,41,58,11,85,67,39,100");
if (input == null) continue;
inputSplit = input.split(",");
if (inputSplit.length >= 10) {
try {
for (i=0; i<10; i++) {
num = Integer.parseInt(inputSplit[i]);
if (num < 10 || num > 100) break;
nums[i] = num;
}
} catch (NumberFormatException ex) {}
if (i == 10) {
new ColumnChart(nums);
break;
}
}
}
}
}
2维的还是三维的啊?
我想问问,十个整数表示什么,是柱状图的X轴值还是Y轴值啊?写完了怎么联系你啊。