- 締切済み
javaプログラムで背景色を変更するには
java初心者中の初心者です。背景色の変更方法をお尋ねします。 具体的質問内容: BMI値(肥満度)に応じて背景の色が変化するようにしたい。 BMI値が20未満の場合は黄色、20~24未満の場合は緑、24以上は赤、エラーの場合は青になるように。 actionPerformedで、結果に応じてbgcolorを変更するのだと思いますがよくわかっておりません。 大変あつかましいお願いですが、記述そのものを御教示いただけると助かります。 ソースコードをここに載せたらいいのか迷ったのですが、必要であればお知らせください。 どうぞよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- pcbeginner
- ベストアンサー率46% (261/560)
>あてずっぽうで回答するなら >setBackgroundメソッドで背景色を変えることはできませんか? は読んでお試しにならなかったのでしょうか。 残念です。 一部抜粋ですが、下に乗せたソースの(1)と(2)に背景色を設定するコードを書けば実現できます。 背景色を設定するのは 質問内容から推測すると「おそらく」TextAreaだと思いますので ta.setBacground(色) でできます。 この説明でわからなければ、JavaDocを見て下さい。 上記推測が外れていて、Applet全体の背景色という意味でしたら、 setBackground(色) でできます。 さらに予測が外れていた場合は「何の背景色」なのか、具体的に記述して下さい。 (↓全角スペースでインデントをつけています。) // リスナー: Button, TextField, TextArea に対応 public void actionPerformed( ActionEvent e ) { if( e.getSource() == btn ) { // 発生元を確認 float sincho, taiju, himando ; // TextFieldからデータを取得 try { sincho = Float.valueOf(tf1.getText()).floatValue() ; taiju = Float.valueOf(tf2.getText()).floatValue() ; } catch(Exception err) { // 変換エラーへの対応 sincho = 0 ; taiju = 0 ; } if( sincho>0 && taiju>0 ) { himando = taiju*10000/(sincho*sincho) ; ta.setText( "あなたのBMIは"+himando+"です") ; //ここにhimandoの値の条件分岐を行い、条件に従って背景色を設定する。(1) } else { ta.setText( "データに不正な値があるか,入力されていません") ; //ここにエラーの場合の背景色を設定する。(2) } ta.repaint() ; // TextAreaのみを再描画 } }
- pcbeginner
- ベストアンサー率46% (261/560)
>大変あつかましいお願いですが、記述そのものを御教示いただけると助かります。 >ソースコードをここに載せたらいいのか迷ったのですが、必要であればお知らせください。 であれば、ソースを最初から載せましょう。 質問者様以外の人には「背景色」というのが、「何の」背景色なのかさっぱりわかりません。 あてずっぽうで回答するなら setBackgroundメソッドで背景色を変えることはできませんか?
補足
回答ありがとうございました。質問形式が適切ではなく申し訳ありませんでした。 背景色とは表示領域全体を塗りつぶすことです。 ソースコードは以下のとおりです。 // jprog05.java import java.awt.* ; import java.awt.event.* ; // イベント処理 import java.applet.* ; // クラス名 jprog05 はファイル名と一致させる public class jprog05 extends Applet implements ActionListener { // GUI部品 TextField tf1, tf2 ; Button btn ; TextArea ta ; // 初期設定メソッド -- アプレットが動作を始める時に一度だけ実行される public void init() { setBackground(Color.lightGray) ; // 部品を初期化 tf1 = new TextField(10) ; tf2 = new TextField(10) ; btn = new Button("計算") ; ta = new TextArea(3,40) ; ta.setEditable(false) ; // 出力専用に設定 // 画面上に配置 -- 順序にも注意 add( new Label("身長(cm)",Label.RIGHT) ) ; add( tf1 ) ; add( new Label("体重(kg)",Label.RIGHT) ) ; add( tf2 ) ; add(btn) ; add(ta) ; // イベントを受信するリスナーを登録 btn.addActionListener(this) ; } // リスナー: Button, TextField, TextArea に対応 public void actionPerformed( ActionEvent e ) { if( e.getSource() == btn ) { // 発生元を確認 float sincho, taiju, himando ; // TextFieldからデータを取得 try { sincho = Float.valueOf(tf1.getText()).floatValue() ; taiju = Float.valueOf(tf2.getText()).floatValue() ; } catch(Exception err) { // 変換エラーへの対応 sincho = 0 ; taiju = 0 ; } if( sincho>0 && taiju>0 ) { himando = taiju*10000/(sincho*sincho) ; ta.setText( "あなたのBMIは"+himando+"です") ; } else { ta.setText( "データに不正な値があるか,入力されていません") ; } ta.repaint() ; // TextAreaのみを再描画 } } // 描画メソッド -- 画面が再描画されるたびに実行される public void paint(Graphics g) { } }