アプリ版:「スタンプのみでお礼する」機能のリリースについて

java初心者中の初心者です。背景色の変更方法をお尋ねします。

具体的質問内容:
BMI値(肥満度)に応じて背景の色が変化するようにしたい。
BMI値が20未満の場合は黄色、20~24未満の場合は緑、24以上は赤、エラーの場合は青になるように。
actionPerformedで、結果に応じてbgcolorを変更するのだと思いますがよくわかっておりません。

大変あつかましいお願いですが、記述そのものを御教示いただけると助かります。
ソースコードをここに載せたらいいのか迷ったのですが、必要であればお知らせください。
どうぞよろしくお願いいたします。

A 回答 (2件)

>あてずっぽうで回答するなら


>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のみを再描画
  }
}
    • good
    • 0

>大変あつかましいお願いですが、記述そのものを御教示いただけると助かります。


>ソースコードをここに載せたらいいのか迷ったのですが、必要であればお知らせください。
であれば、ソースを最初から載せましょう。
質問者様以外の人には「背景色」というのが、「何の」背景色なのかさっぱりわかりません。

あてずっぽうで回答するなら
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) {
}

}

補足日時:2006/12/18 12:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A