ここから本文です

Javaアプレットで円グラフを作成したいのですが

frd********さん

2010/5/1005:57:21

Javaアプレットで円グラフを作成したいのですが

お世話になります。未だ初心者の域を抜けませんが、この度はJAppletを使用した円グラフ作成についての質問です。
添付された画像ファイルのように、各TextFieldに数値を入力しエンターキーを押したとき、それが円グラフに反映するようなコードを探しています。

何となく概要は掴んでいるのですが、何故かinitとpaintの共存に失敗してしまいます・・・

下記のコードに各4つのJLabel, JTextFieldを入力し、JTextFieldをActionListnerに追加等をしたらいいと思っているのですが、どうなのでしょうか?

public class PieChart extends JApplet implements ActionListener{
JLabel label1,label2,label3,label4;
JTextField text1,text2,text3,text4;

public void init(){
//GridLayoutで縦2、横4のContainerを使用したいです
Cotainer c = getContentPane();
text1 = new JTextField(5);
text1.setEditable(true);
text1.addActionListener(this);
//同じことをtext2~4
..........

label1 = nw JLabel("High Risk");
//
........

}

public void paint(Grahics g){
g.fillArc(80,80,50,50, 90, -?); //円グラフの一部、90度のところから時計回りに
......
}

public void actionPerformed(Action e){
......
}

}

よろしくお願いします!

JLabel label1,円グラフ,High Risk&quot,text2,new JTextField,actionPerformed,コンポーネント

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
1,101
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

maj********さん

2010/5/1013:10:36

数値によって円を分割する描画処理はpaintに既に実装しているのですね?
ならば、actionPerformed(後、actionPerformedの引き値はActionEventです)からrepaint()を呼び出せばよいです。

Swingでは自分のコンポーネントに何かを描画する際、paint関数をオーバーライドするのではなく、paintComponent関数をオーバーライドする様にして下さい。
これは、paint関数に子コンポーネントを描画する処理(他にも自分を描画するべきか判断する処理も含まれます)があるため、基本的には変更すべき所ではないのです。(もちろん、変更することで効果を狙う場合もありますが、基本的にはこの様に覚えておいて下さい。)

あと、構造上appletにグラフの描画処理を書くよりも、ブラフ描画用のコンポーネントを作った方が作りやすいと思います。
この場合は、そのコンポーネントをgraphとでも名付けておくとactionPerformedからgraph.repaint()を呼び出せばいいです。

質問した人からのコメント

2010/5/16 02:07:12

降参 返事遅れてごめんなさい。
お陰さまで無事解決できました。ありがとうございました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる