次のような棒グラフをつくります。

import java.awt.*;
import javax.swing.*;
public class DrawRectG extends JFrame{
public DrawRectG() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("グラフ");
setLayout(new BorderLayout());
MyPanel mypnl = new MyPanel();
add(mypnl, BorderLayout.CENTER);
mypnl.setBackground(Color.white);
mypnl.setPreferredSize(new Dimension(400,300));
pack();
setVisible(true);
}
public static void main(String[] args){
DrawRectG myframe = new DrawRectG();
}
public class MyPanel extends JPanel{
int[] data={10,40,120,60,80};
int yzero=250;
int left =50;
int top =50;
int dx = 50;
public void paintComponent(Graphics myg){
super.paintComponent(myg);
myg.setColor(new Color(0,0,0));
myg.drawLine(x1,y1,x2,y2); //x軸
myg.drawLine(x1,y1,x2,y2); //y軸
myg.setColor(new Color(0,0,255));
for(int i=0; data.length>i ; i++){
myg.fillRact(x,y,w,h);
}
}
}
}
paintComponent()内は未完成です。drawLineのx1,y1,x2,y2や fillRactのx,y,w,hは別の値やyzero,left,dx,data[i]を使った式に置き換えなければなりません。
一番外側のJFrameはsetSize()で大きさを指定していましたが、それでは中に入るJPanelがそれより小さくなります。
グラフを描くにあたりパネルの大きさを指定したいのでsetPreferredSize()を使いました。大きさはDimensionというクラスを使いますが、上記のように書けば400x300になります。
pack()をすればパネルに合わせてフレームの大きさをあわせてくれます。
プログラムの中に定数として yzero, left, top を書いていますが意味は次の図のとおりです。
int yzero=250; int left =50; int top =50;

y軸は次のようにすればできます。
myg.drawLine(left,top,left,yzero); //y軸
グラフにするデータはdata[]に入っていてその数はdata.lengthです。
x軸の右端は一つの棒の領域幅をdxとしてデータ数分あればいいので次のようにすればできます。
myg.drawLine(left,yzero,left+dx*data.length,yzero); //x軸
データ数はdata.lengthですから、繰り返しはforを使います。
for(int i=0; data.length>i ; i++){
最初のデータの棒を描く横位置はy軸よりちょっと右がいいでしょう。
myg.fillRect(left+10+dx*i,top,dx/2,data[i]);
棒を描く横位置はdxずつ右によせて行かないと重なってしまいます。i が0から始まりますから一番最初は left+10 で好都合です。
myg.fillRect(left+10+dx*i,top,dx/2,data[i]);
棒を描く縦位置はちょっと難しいのでとりあえず top にします。これは後で変更します。
myg.fillRect(left+10+dx*i,top,dx/2,data[i]);
棒の幅はdxの半分にしましょう。
myg.fillRect(left+10+dx*i,top,dx/2,data[i]);
棒の高さはdata[i]にしましょう。最大で120ですから、そのまま描いてもはみ出しません。
myg.fillRect(left+10+dx*i,top,dx/2,data[i]);

棒の高さはdata[i]でいいのですが、棒を描く縦位置を変更しなければなりません。次の図を参考に変更しなさい。

上記プログラムをつくりなさい。