• 締切済み

setColorメソッド の使い方

import java.applet.Applet; import java.awt.*; import java.awt.event.*; /* <APPLET CODE= "JaRadio1.class" WIDTH=300 HEIGHT=150> </APPLET> */ public class JaRadio1 extends Applet implements ItemListener{ CheckboxGroup grp1; Checkbox bx1,bx2,bx3; int r=255,g=255,b=255; String ss =""; public void init(){ grp1=new CheckboxGroup(); bx1=new Checkbox("Red",true,grp1); bx2=new Checkbox("Green",false,grp1); bx3=new Checkbox("Blue",false,grp1); bx1.addItemListener(this); bx2.addItemListener(this); bx3.addItemListener(this); add(bx1); add(bx2); add(bx3); } public void itemStateChanged(ItemEvent e){ r=g=b=0; if(bx1.getState()==true){ r=255; } if(bx2.getState()==true){ g=255; } if(bx3.getState()==true){ b=255; } ss=("Red="+r+" Green="+g+" Blue="+b); repaint(); } public void paint(Graphics g){ g.drawString(ss,30,40); // g.setColor(new Color(r,g,b)); g.fillOval(30,60,80,30); } } g.setColor(new Color(r,g,b)); により色つき図形を 赤緑青をチェックボックスで選択して 描きたいのですが この部分でエラーがでてしまいます。 上記のように//によりコメントアウトするとコンパイルできます どこが間違っているのかどうしてもわかりません よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数1

みんなの回答

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

g.setColor(new Color(r,g,b)); この r,g,b の g なんですが、色を表す int 値フィールドを表しているつもりなんでしょうが、ここでこう書くとメソッドの引数である Graphics オブジェクトの g を指すことになります。 引数の名前を変えるか、 g.setColor(new Color(r,this.g,b)); と書き換えましょう。 ただ、このくらいのレベルのエラーはぜひともエラーメッセージを読んで自力で解決して欲しいものです。 エラーメッセージには「setColor メソッドに対する引数の型がおかしい」という意味のことが書いてあるはずです。どうして引数の型がおかしいのか考えると、変数の名前がかぶっていることに気が付けるはずです。

buafk516
質問者

お礼

回答ありがとうございます。 >このくらいのレベルのエラーはぜひともエラーメッセージを読んで自力で解決して欲しいものです。 その通りですね。 また機会がありましたらよろしくお願いします。

関連するQ&A

  • Enterキーでボタンを押すにはどうすればいいのでしょうか

    色を指定するチェックボックスがあり,表示ボタンで指定された色の混色を表示するプログラムです. このプログラムに,Enterキーの入力に表示ボタンを押したのと同じ効果をもたせたいのですが,どうすればいいでしょうか. また,requestFocusInWindow()をどこに挿入すればうまくいくのでしょうか. *************************************************************** import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Q1 extends Applet implements ActionListener { // チェックボックス3つとボタン1つ Checkbox cbx1, cbx2, cbx3; int red = -1, green, blue; Button btn; public void init() { cbx1 = new Checkbox("Red"); cbx2 = new Checkbox("Green"); cbx3 = new Checkbox("Blue"); add(cbx1); add(cbx2); add(cbx3); btn = new Button("Paint"); btn.addActionListener(this); add(btn); addKeyListener(new KeyAdapter() { public void KeyPressed(KeyEvent ke) { if (ke.getKeyCode() != KeyEvent.VK_ENTER) return; SetColor(); repaint(); } }); } // ボタンを押したとき public void actionPerformed(ActionEvent e) { SetColor(); repaint(); } // 色の設定 public void CheckColor() { if (cbx1.getState()) red = 255; else red = 0; if (cbx2.getState()) green = 255; else green = 0; if (cbx3.getState()) blue = 255; else blue = 0; } // 色付き長方形の表示 public void paint(Graphics g) { if (red != -1) { g.setColor(new Color(red, green, blue)); g.fillRect(10, 50, getSize().width - 20, getSize().height - 40); } } } *******************************************************************

    • ベストアンサー
    • Java
  • add( )メソッドについて

    import java.applet.Applet; import java.awt.*; /* <applet code="Sample" width=400 height=250> </applet> */ public class Sample extends Applet { public void init() { // ラベルを作成する。 Label lb = new Label("こんにちは。", Label.LEFT); add(lb); } } 上記のプログラムのadd(lb)について質問です。上記のadd()メソッドは、lbはLabelクラスなので、LabelクラスかComponentクラスのパラメーターを一つ持つvoid型のadd()メソッドとなると思うのですが、調べてもそのようなメソッドが存在しませんどうしてでしょうか?上述のことが間違っているのでしょうか?教えてください。

    • ベストアンサー
    • 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(); } }

  • PacMan

    以下のようなプログラムで自動で動くパックマンを作りました。 パックマンが転がっていくのですが、どうしても目の部分の起動がかけません。 どなたかお力を貸していただけないでしょうか? ================================================= import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.util.*; /* <applet code="PacMan2.class" width="500"height="500"> </applet> */ public class PacMan2 extends Applet implements Runnable { volatile Thread thr; volatile boolean runFlag = true; public void start() { thr = new Thread(this); runFlag = true; thr.start(); } public void stop() { runFlag = false; thr = null; } public void run() { while (runFlag) { repaint(); try { Thread.sleep(1000); //1,000 mili-seconds } catch(InterruptedException e) { runFlag = false; } } } public void paint(Graphics g) { Calendar cal = Calendar.getInstance(); int s = cal.get(Calendar.SECOND); g.setColor(new Color(128,255,255)); g.fillArc(100+s,100,60,60,45-s,300);   g.setColor(new Color(0,0,0)); g.fillOval(130,105,10,10); } } =================================================

    • ベストアンサー
    • Java
  • アプレットでスクロールバーを作りたいがコンパイルエラーが出る。

    アプレットでスクロールバーを作ろうと思っています。下記のコードをコンパイルすると 「import java.applet.Applet;abstract として宣言する必要があります。」とコンパイルエラーになります。いろいろ調べましたが原因がわかりません。なぜこのようなことが生じるのでしょうか? import java.awt.*; import java.awt.event.*; public class testScroll extends Applet implements AdjustmentListener{ Scrollbar sbar; public void init(){ setLayout(new BorderLayout()); sbar=new Scrollbar(Scrollbar.HORIZONTAL,1,10,1,300); add("South",sbar); sbar.addAdjustmentListener(this); } public void paint(Graphics g){ g.setColor(Color.gray); g.fillRect(0,0,350,150); } public void adjustmentValueCanged(AdjustmentEvent e){ if(e.getAdjustable()==sbar){ repaint(); } } } ■C:\**> javac testScroll.java testScroll.java:7: testScroll は abstract として宣言する必要があります。 adjustmentValueChanged(java.awt.event.AdjustmentEvent) を testScroll で定義しません。 public class testScroll extends Applet implements AdjustmentListener{ ^ エラー 1 個

    • ベストアンサー
    • Java
  • <identifier>エラーについて

    paintメソッド内ではなく、public class直下で図形の表示をしなければならないのですが、どうしても <identifier>がありません とエラーが出てしまいます; 調べてみたのですがわからなかったので指摘をお願いしますorz プログラムは以下の通りです /* <applet code="Reidai25kai.class" width=500 height=600> </applet> */ import java.applet.Applet; import java.awt.*; public class kadaiM extends Applet implements Runnable { int xichi = 100, yichi = 250, xido = 3, yido = 4; int i, mx=225, my=495; int[] bx = {100,150,200,250,300,350, 100,150,200,250,300,350, 100,150,200,250,300,350}; int[] by = {250,250,250,250,250,250, 300,300,300,300,300,300, 350,350,350,350,350,350}; g.setColor(new Color( 0, 255, 0)); g.fillRect(mx, my, mx+50, my+10); g.drawRect(0, 0, 450, 550); for(i=0; i<18; i++) { g.setColor(new Color(255,170,10*i)); g.fillOval(bx[i]-20,by[i]-20,50,50); } public void init() { Thread hyoji; hyoji = new Thread(this); hyoji.start(); } public void run() { for( ; ; ) { try { xichi = xichi + xido; //ボールx座標の更新 yichi = yichi + yido; //ボールy座標の更新 repaint(); if(xichi < 10 || xichi > 440)xido = -xido; //横方向跳ね返り if(yichi < 10 || yichi > 540)yido = -yido; //縦方向跳ね返り Thread.sleep(30); } catch(InterruptedException e){} } } public void paint(Graphics g) { g.setColor(new Color( 0, 0, 255)); g.fillOval(xichi-10, yichi-10, 20, 20); } }

  • ペイントソフトでキャンバス内にだけにかけるようにしたいです。

    どうしたらいいのかわからいので、何かヒントでiいので教えてください。 import java.applet.*; import java.awt.*; import java.awt.event.*; /* <APPLET CODE ="Mous" WIDTH = 500 HEIGHT = 300> </APPLET> */ public class Mous extends Applet { Graphics g; int point_x, point_y; Button color_black,color_red,color_blue,clear; public void init() { g = getGraphics(); setLayout(null); addMouseListener(new MouseAdapter () { public void mousePressed(MouseEvent e){ point_x = e.getX(); point_y = e.getY(); } }); addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { g.drawLine(point_x,point_y,e.getX(),e.getY()); point_x = e.getX(); point_y = e.getY(); } }); color_black = new Button("黒"); color_black.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { g.setColor(Color.black); } }); color_red = new Button("赤"); color_red.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { g.setColor(Color.red); } }); color_blue = new Button("青"); color_blue.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { g.setColor(Color.blue); } }); clear = new Button("クリアー"); clear.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { g.clearRect(0,0,500,300); } }); add(color_black); add(color_red); add(color_blue); add(clear); } }

  • アクションリスナー(初心者です)

    JAVAでボタンが押されたらすでに描かれている線に さらに線が加わって描かれるというプログラムを作ろうとしているのですが、アクションリスナーを受け取ったメソッドの中身をどうしたらいいのか行き詰まりました・・・作りかけのプログラムを載せてみますので アドバイスいただければと思います よろしくお願いします import java.applet.Applet; import java.awt.Graphics.*; import java.awt.event.*; import java.awt.*; public class file928 extends Applet implements ActionListener { Button botan; public void init() { botan=new Button("選択"); add(botan); botan.addActionListener(this); } public void paint(Graphics g) { g.drawString("L.A.Airport",100,300);           ~中略~ g.drawLine(405,420,655,240); } public void actionPerformed(ActionEvent x) { ーここをどうしたらいいかわかりません・・・ー } }

    • ベストアンサー
    • Java
  • getInsets() メソッドの使い方について

    JAVA言語を勉強中の者です getInsets() メソッドでフレームの外周に空白部分を 作るのですが、その場合は以下のように   public Insets getInsets(){     return new Insets(40,10,10,10);   } とオーバーライドするとあります。 オーバーライドのみで外周に空白ができるのを確認できたのですが このオーバーライドされたメソッドをフレームのコンストラクター内等でgetInsets(); とメソッドを書かなければ, このメソッドはフレームに反映されなのではないかと考えているのですが、 実際は書かなくても外周の空白はきっちりととれます。 どうしてオーバーライドのみでこのメソッドは実行結果に反映されるのでしょうか。 よろしくお願いします   MyFrame(String ss){     .............     getInsets(); //この記述不要で動作します     .............   } 簡単なソースを記述しました import java.awt.*; public class Sample{   public static void main(String args[]){     MyFrame frame = new MyFrame("Sample.java");     frame.setSize(200,200);     frame.setVisible(true);   } } class MyFrame extends Frame{   Button b1, b2, b3, b4;   MyFrame(String ss){     super(ss);     setLocation(100,100);     setLayout(new GridLayout(2,2));     //getInsets(); この記述がないと外周空白はできないと考えています     add(b1=new Button("1"));     add(b2=new Button("2"));     add(b3=new Button("3"));     add(b4=new Button("4"));   }   public Insets getInsets(){     return new Insets(40,10,10,10);   } }

    • ベストアンサー
    • Java
  • Javaプログラムの繋げ方について。

    Javaプログラムの繋げ方について。 今まで(1)のようなプログラムを書いていました。 作りたいものに向けて色々検索するとやりたいものに近い(2)のようなサンプルプログラムを見つけました。 しかし、Java初心者なもので混ぜ方(?)がわかりません。 現在の私の知識からいうと今までのはアプレットでフレーム使うのはアプリケーションなのかな?別物なのかな?そんな感じです。 もし、混ぜることができるなら何かアドバイスをお願いします。 (1)package test; import java.applet.* ; import java.awt.Label ; import java.awt.Font ; import static java.awt.Font.BOLD ; import java.util.*; import java.awt.Graphics; import java.awt.Image; import java.awt.*; public class test extends Applet{ public void paint(Graphics g){ g.setColor(Color.red); g.fillOval(320, 200, 100, 100); } public void init () { ~~~~~~~~~~~~~~~~ } public void start () { ------------ }}} (2)import java.awt.*; import java.awt.event.*; public class MouseEvent7 extends Frame { int posX = 50; int posY = 50; public static void main(String [] args){ new MouseEvent7(); } //コンストラクタ MouseEvent7(){ this.addWindowListener(new WinAdapter()); //ウィンドウリスナーの登録 this.setSize(200,200); this.setVisible(true); //MouseMotionListenerの登録 addMouseMotionListener( new MouseMotionAdapter(){ public void mouseMoved(MouseEvent e){ posX = e.getX(); posY = e.getY(); repaint(); //paintメソッドを実行 } } ); } public void paint(Graphics g){ g.drawOval(posX,posY,50,50); } } (1)の内容に本当に(2)のプログラムで出来るマウスの動きに合わせて円も動く+クリックしたらそこで止まるだけいいのですが。 出来たら止まった点の座標も取りたいですが、そこまではいってません;;

専門家に質問してみよう