• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javaのプログラムについての質問です。)

Javaのプログラムでボタンを押して円の色を変える方法

このQ&Aのポイント
  • Javaのプログラムでボタンを押して円の色を変える方法を教えてください
  • ボタンを押すたびに円の色を黄→赤→黒→黄と3~4色でループさせる方法を教えてください
  • if文を使用して2色の場合は簡単に実装できるが、3~4色の場合はどうすれば良いかわかりません

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 やりかたはいろいろあると思いますがbooleanでは2値しか持てませんのでint等を使えばよいと思います。 int intColor = 0; public void actionPerformed(ActionEvent e) {  if ( intColor == 0 ) {   // 最初の色   setBackground(Color.yellow);   intColor ++;  } else if ( intColor == 1 ) {   setBackground(Color.red);   intColor ++;  } else if ( intColor == 2 ) {   setBackground(Color.black);   intColor = 0;  } } こうすると 最初のボタン押下時にintColorは0のため黄色に設定してintColorを加算し1にします。 次にボタンを押下した場合intColorは1のため赤に設定してintColorを加算し2にします。 次にボタンを押下した場合はintColorは2のため黒に設定してintColorを0にします。 次にボタンを押下した場合はintColorは0に戻っているため最初の処理と同じことをします。 以下繰り返します。 ほかにも配列にカラーを持っておいてsetBackground(colorArray[intColor]); とかにしてボタンを押す毎にintColorを加算しカラー配列数まで達したら0に戻すというロジックにすると 配列に色を追加してコーディングするだけでボタンを押下毎にいろがループしていくなんていう処理も出来ます。

freedom4447
質問者

お礼

かなり困っていたので、早い回答でとても助かりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • JAVAのアプレットのアニメーションの質問

    javaのアプレットに関する質問なんですが、今次の条件でアニメーションを作っているんですが、どうしても解決できない問題があります。 赤い長方形が左から右に動いていくプログラムを作成する。 ・ 長方形が描画領域 の右端に消えると左端から再 度出現するようにせよ。 ・ Reverseと書かれたボタンを押すと長方形の進行方 向が左右反対になる。 ・ このとき、左右どちらの端に長方形が消えた場合も 反対端から長方形は出現する。 ・ 長方形をクリック(ボタン押下)すると長方形の色が 変化する。 ・ 赤い長方形であれば青に、青い長方形であれば赤 に変化する。 この条件でつくろうと思っているのですが、長方形をクリックしたときに、色の変化がどうしてもできません。どこに問題があるか分かりません。御教授お願いします。 import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; import java.awt.Font; import java.awt.Button; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.MouseListener; public class Report2 extends Applet implements Runnable,ActionListener,MouseListener{ int x=100; int y=50; int width=80; int height=120; int dir=-2; int w; int z; Button bt; boolean direction; boolean colorRed; public void actionPerformed(ActionEvent ae){ if(direction==true){ direction=false; } else{ direction=true; } } public void init(){ bt=new Button("Reverse"); add(bt); bt.addActionListener(this); Thread th; th =new Thread(this); th.start(); addMouseListener(this); } public void mouseClicked(MouseEvent e){ w=e.getX(); z=e.getY(); repaint(); if(e.getX()>=x && e.getX()<=x+width && e.getY()>=y && e.getY()<=y+height){ colorRed=!colorRed; } } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void mouseReleased(MouseEvent e){ } public void mousePressed(MouseEvent e){ w=e.getX(); z=e.getY(); repaint(); if(e.getX()>=x && e.getX()<=x+width && e.getY()>=y && e.getY()<=y+height){ colorRed=!colorRed; } } public void run() { while(true){ x++; if(x==400){ x=-80; } if(direction==true){ x=x+dir; } else{ } repaint(); try{ Thread.sleep(30); } catch(InterruptedException e){} } } public void paint(Graphics g){ g.setColor(Color.white); g.fillRect(0,0,400,200); g.setColor(Color.red); g.fillRect(x,y,80,120); if(colorRed=true){ g.setColor(Color.red); } if(colorRed=false){ g.setColor(Color.blue); } g.fillRect(x,y,width,height); g.setColor(Color.black); g.fillRect(x,y,10,10); } }

    • ベストアンサー
    • Java
  • 初めて学校でJAVAを習い始めたものです。突然の課題でポップアップを使

    初めて学校でJAVAを習い始めたものです。突然の課題でポップアップを使い好きな背景色と文字色を質問してそれを記入すると背景と文字色(赤、緑、青、Maroon、ネイビーの5色のみ、それ以外はエラー)が変わるという単純なプログラムを作れといわれているのですが、かなり混乱しています。 自分なりにプログラムを組んでみて var name = prompt("好きな色は?:", ""); setBackground(Color.Red) ; setBackground(Color.Green) ; setBackground(Color.Blue) ; setBackground(Color.Maroon) ; setBackground(Color.Navy) ; <script type="text/javascript"> と背景色を変えようと此処までやってみたのですがそれ以外はさっぱりです。どうやらVariableを使ってInputしなければならないらしい(?)のですがお手上げ状態です。どなたかアドバイスよろしくお願い致します。

  • JavaのJButtonについて。

    JavaのJButtonについて質問です。 ボタンの色をbt.setBackground(new Color(255,127,80));で変更した後、デフォルトのボタンに戻すには、どのように記述すれば良いのでしょうか。 回答お願いします。

  • Javaのプログラムについて質問なのですが。

    マンデルブローを図を描くプログラムなのですが、ボタンを押すたびにcountがカウントアップされ それに従って、wwの値が巡回的に、0.0、1.0、2.0、3.0、0.0、1.0、... なるようにして、その値で マンデルブロー図を書くプログラムみたいなのですが、 2つのメソッドactionPerformedとmainの中を完成させたいのですが、 一応mainの中身はコンパイルすると表示されるので出来たと思うのですが、 actionPerformedのボタンの処理をどう記述したらいいのかわかりません。 どなたか教えてください。 以下にプログラムを記述します。 import java.awt.*; import java.awt.event.*; import javax.swing.*; class Mandel extends JPanel implements ActionListener{ double ww = 0.0; int count = 0; int myHeight = 400, myWidth = 400; JButton b; JLabel valww; Mandel(){ setPreferredSize(new Dimension(myHeight, myWidth)); b = new JButton("scale"); valww = new JLabel("ww=0.0"); add(b); add(valww); b.addActionListener(this); } public void paintComponent(Graphics g){ super.paintComponent(g); int istart =-myWidth/2, istop = myWidth/2; Color [] col ={ Color.green,Color.cyan, Color.black, Color.red, Color.blue,Color.white, Color.gray,Color.yellow, Color.lightGray,Color.pink,Color.darkGray,Color.magenta }; double ox=-1.1, oy=0.0; double zr,zi, cr, ci, tr, ti; int i, j, k; for (i=istart; i<=istop; i++){ for (j=-myHeight/2+50; j<=myHeight/2; j++){ zr=0.0; zi=0.0; cr=ww*i/1000.0+ox; ci=ww*j/900.0+oy; for (k=1; k<100; k++){ tr=zr*zr-zi*zi; ti=2*zr*zi; zr=tr+cr; zi=ti+ci; if (zr*zr+zi*zi >=20000.0) break; } g.setColor(col[k%12]); g.drawLine(i+myWidth/2,j+myHeight/2,i+myWidth/2,j+myHeight/2); } } } //ここのactionPerformedの記述がわかりません。 public void actionPerformed(ActionEvent e){ if(e.getSource()==b){ repaint(); } } //コンパイルすると表示されるので、ここは出来たと思うのですが。 public static void main(String args[]){ JFrame f = new JFrame(); Mandel m = new Mandel(); f.getContentPane().add(m,BorderLayout.CENTER); f.pack(); f.setVisible(true); }

    • ベストアンサー
    • Java
  • JAVAのプログラミングについて

    色変更というボタンを押すたびに、正方形の中の色が緑から青、青から緑というように繰り返し色が変わるプログラムを作りたいのですが、途中までは、完成できたのですが、ここからどうすればいいかわかりません。教えてください。 import java.awt.*; import java.applet.*; import java.awt.event.*; public class kadai3Applet extends Applet implements ActionListener { int i = 1; Button collor; public void init(){ collor = new Button("色変更"); collor.addActionListener(this); add(collor); } public void paint(Graphics g){ g.setColor(Color.green); g.fillRect(50,50,50,50); } public void actionPerformed(ActionEvent e){ if(e.getSource() == collor){ } repaint(); } }

  • Javaのメモリ・リークについて

    Javaのメモリ・リークについて 以下のコードはスレッド内で、無限ループをしています。 コンストラクタで呼び出し、ずっとこのままにしておいてもフリーズするか否かが知りたいです。 (jconsole.jarというツールがありますが、まだ理解に至っておりません。) ご存知の方がおられましたら教えてください。 よろしくお願いいたします。 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class ActioneventRoopTest extends JFrame implements Runnable, ActionListener { JButton start = new JButton(); JButton change = new JButton("切り替え"); Boolean flag = true; public static void main(String[] args) { new ActioneventRoopTest(); } public ActioneventRoopTest() { change.addActionListener(this); start.addActionListener(this); this.add(change); this.pack(); this.setVisible(true); Thread thread = new Thread(this); thread.start(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == change) { if (flag) { flag = false; } else if (!flag) { flag = true; } } } public void run() { while (true) { while (flag) { System.out.println("リンゴ"); } while (!flag) { System.out.println("ミカン"); } } } }

    • ベストアンサー
    • Java
  • Java言語のSwingコーポネント「JToggleButton」につ

    Java言語のSwingコーポネント「JToggleButton」について質問です。 選択後のボタンの背景はどうすれば変更できるでしょうか? 選択前のボタンはsetBackGroundで変更できるのですが、ボタンを押すと色が元に戻ってしまいます。 コンストラクタ内でも他のクラスからでも、また選択されていない状態でsetBackGroundを実行しても変わりません。 以下ソースコード public コンストラクタ(){ this.setBackground(Color.YELLOW);//これでも無理 this.setSelected(true); this.setBackground(Color.YELLOW);//これでも無理 this.setIcon(icon); }

    • ベストアンサー
    • Java
  • rubyの構文(&&を用いた条件分岐について)

    ruby初心者です。 最近、ruby on railsで書かれたソースを引き継ぎ解析を行っています。 その中で、以下のような構文が出てきました。 ========================================= num = 0 bool = false vals = '' puts 'start' num == 0 && bool && if vals  puts 'true' else  puts 'false' end puts 'end' ========================================= 上記プログラムを実行すると、if ~ end までが実行されませんでした。 そこで、変数boolをtrueに変更して再実行したところ、if文が実行されました。 そこで私は、上記プログラムは以下と同値であると解釈しました。 ====================================== (省略) if num == 0 && bool  if vals   puts 'true'  else   puts 'false'  end end ======================================= 以上を踏まえて・・・ 1.私の解釈は正しいでしょうか? 2.間違っている場合、正しい処理の解釈を教えていただけますでしょうか?または参考URLを教えていただけますと助かります。 文の最後に"&&"がついている文を見たことがなく、ネットで調べても 正解らしいものが掲載されていなかったので質問させていただきました。 拙い説明で申し訳ありませんが、よろしくお願いいたします。

    • ベストアンサー
    • Ruby
  • javaについて質問

    import javax.swing.*; import java.awt.Color; import java.awt.Graphics; import java.awt.event.*; public class tt extends JFrame { public tt(){ setTitle("hogehoge"); setBounds( 10, 10, 300, 200); JButton btn1 = new JButton("続ける"); final JPanel p = new JPanel(); p.setBackground(Color.white); btn1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event){ } } ); p.add(btn1); getContentPane().add(p); } public static void main(String[] args){ tt test = new tt(); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); /* 実際に表示する */ } } Graphics g; g.drawString("ほげさんじょう",130,120);を追加しても コンパイルが通りません。 どうすれば画面に文字列を表示するんですか? あとテキストフィールドを追加するさいに、座標していとかして追加できないんですか?

  • JAVAプログラムについて

    あるプログラムに下記に機能を追加したいのですが どのようにプログラムすればよいかわかりません。 プログラム記述方法を教えてください。 (1)赤・緑・青の明るさを数値で指定し、任意の色で描画できるようにしたい。 (2)「色交換」ボタンを追加し、このボタンを押すと、最後に描かれた図形の線の色と塗りつぶしの色が入れ替わるようにしたい。 以上よろしくお願いします。