• ベストアンサー

テキストフィールドに入力した数だけ円を表示する

お世話になります。 表題の件ですが、どうしてもうまくいかなくて困っています。 Javaアプレットを使って、テキストフィールドに入力した数だけ円を描くというプログラムを作成しているのですが、下記を実行してもエラーになってしまい、 テキストフィールドに数字を入力しても何も出てこない状態です。 import java.awt.*; import java.applet.*; import java.awt.event.*; public class drawCircle extends Applet implements ActionListener{ TextField Circle; public void init(){ Circle = new TextField("", 2); add(Circle); Circle.addActionListener(this); } public void actionPerformed(ActionEvent e){ int CircNum = Integer.parseInt(Circle.getText()); repaint(); } public void paint (Graphics g){ int x=20; for(int i=0; i<=CircNum; i++){   ←※ここが悪いらしい g.drawString("◎", x, 20); x +=20; } } } ※の部分では、"CircNumを解決できません"と表示されてしまいます。 テキストフィールドを作成して、テキストフィールドに入力された数字を CircNumに代入して、その数だけ◎を描くというつもりで 上記を作成したのですが、なぜ※のようなエラーがでてきてしまうのでしょうか。 メソッドを超えてCircNumを使用しているからかな、と思うのですが、 解決方法がわかりません。 どなたかご教授いただけませんでしょうか。 どうぞよろしくお願いいたします。

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

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

  • ベストアンサー
回答No.2

フィールドに変数を用意すればいいと思います。 public class drawCircle extends Applet implements ActionListener{ TextField Circle; private int CircNum =0; (略) public void actionPerformed(ActionEvent e){ CircNum = Integer.parseInt(Circle.getText()); ←intを消す repaint(); }

w_dragon
質問者

お礼

ご回答ありがとうございます。 ご指示通り、最初にCircNumを宣言して下のintを消したらできました! 本当に助かりました。どうもありがとうございました!

その他の回答 (1)

回答No.1

>メソッドを超えてCircNumを使用しているからかな、と思うのですが、 正解。 actionPerformedメソッドで「宣言」するのをやめて、 TextFieldのCircle同様に宣言すれば良いです。

w_dragon
質問者

お礼

できました!!! ご回答ありがとうございます!

関連するQ&A

  • 小数の2進数変換について教えてください。

    10進数を2進数に変換するプログラムを作ったのですが、 小数の2進数変換が出来ません。 小数を2進数に変換するにはどうしたらいいのでしょうか? よろしくお願いします。 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Applet1 extends Applet { TextField textField1 = new TextField(10); TextField textField2 = new TextField(10); Button displayButton1 = new Button("2進数変換"); public void init() { displayButton1 = new Button("2進数変換"); add(new Label("10進数")); add(textField1); add(textField2); add(displayButton1); displayButton1.addActionListener(new ToBinaryAction()); } class ToBinaryAction implements ActionListener{ public void actionPerformed(ActionEvent e) { int x = Integer.valueOf(textField1.getText()).intValue(); textField2.setText(Integer.toBinaryString(x)); } } }

    • ベストアンサー
    • Java
  • メソッドが同じオブジェクトのフィールドを参照しません

    <test1.javaファイル> import java.awt.*; public class test1 { //フィールドの定義 public int x = 10; //メソッドの定義 public void drawMoji(Graphics g) { g.drawString("xの値は、" + x, 20, 20); } } <test2.javaファイル> public class test2 extends test1 { //フィールドの定義 public int x = 20; } <mt.javaファイル> import java.awt.*; import java.applet.*; /* <applet code = "mt" width = 300 height = 200> </applet> */ public class mt extends Applet { public void paint(Graphics g) { //インスタンスの作成 test2 t2 = new test2(); //xの値を表すメソッドの実行 t2.drawMoji(g); } } 上記の3つのファイルをコンパイルして、mt.javaファイルをアプレットビュアーで実行したら、"xの値は、20"と表示したいのに、"xの値は、10"と表示されます。t2オブジェクトのフィールドのxの値が20だから、t2.drawMoji(g)で"xの値は、20"と表示されると思うのですが、どうしてこうなるのでしょうか?教えてください。

    • ベストアンサー
    • Java
  • 整数を好きなだけ入力し、個数、合計、平均値を表示するプログラム

    appletviewerに、ボックスの中に整数を好きなだけ入力し、個数、合計、平均値を以下のように表示させるようなプログラムを作りたいです。(1,2,3を入力した場合)     データ□ (入力)        (計算)   個数=3   合計=6   平均値=2 ※□はボックスです。(入力)(計算)はクリックするボタンです。 どなたかご指導やアドバイスをお願いいたします。まだまだ初心者でとても困っています。。 ちなみに途中まで考えたのが以下のプログラムです。 import java.applet.*; import java.awt.Button; import java.awt.Label; import java.awt.TextField; import java.awt.event.*; public class Lec1106 extends Applet implements ActionListener { private TextField box1 = new TextField(5); private Label moji1 = new Label("データ"); private Label moji2 = new Label("個数="); private Label moji3 = new Label("合計="); private Label moji4 = new Label("平均値="); private Button nyuuryoku = new Button("入力"); private Button keisan = new Button("計算"); public void init() { resize(320,240); add(moji1); add(box1); add(nyuuryoku); nyuuryoku.addActionListener(this); add(keisan); keisan.addActionListener(this); add(moji2); add(moji3); add(moji4); } public void actionPerformed(ActionEvent e)  {int i; String t1=box1.getText(); i=Integer.parseInt(t1);

    • ベストアンサー
    • Java
  • SampleCanvasのシンボルが見つからない

    Javaの初心者です。JDK6を使用していますが、次のようなエラーが出ます。 シンボルが見つかりません。 場所:SampleCanvas sampleCanvas; ^ もともとのソースはこちらです //<applet code="circgene.class" width="200" height="200"></applet> import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class circgene extends Applet implements ActionListener{ //コンポーネントの変数を定義 TextField textField; SampleCanvas sampleCanvas; public void init(){ //オブジェクトの生成 textField = new TextField("50"); sampleCanvas = new SampleCanvas(); //テキストフィールドをリスナーに登録する textField.addActionListener( this); //レイアウトの設定 this.setLayout(new BorderLayout()); //コンポーネントをアプレットに追加する this.add(textField,BorderLayout.NORTH); this.add(sampleCanvas,BorderLayout.CENTER); } //イベントの処理 public void actionPerformed(ActionEvent ev){ if(ev.getSource()==this.textField){ int r = Integer.parseInt( this.textField.getText()); this.sampleCanvas.setRadius( r); this.sampleCanvas.repaint(); } } } これは自分の入門書に乗っていたソースのまる写しなのですが、対処法が分かりません。初心者故、質問内容が不十分かもしれませんが、ご教示願います。

  • アプレットの配列をテキスト形式で保存する

    ある画像の上をマウスクリックするとそこに赤いマーカーが表示され、さらにそのマーカーの座標をテキスト形式で保存できるプログラムを組みたいと考えています。マーカー表示はできましたが、保存方法がまったくわかりません。35箇所のマーカー座標を保存したいのですが…。 どなたか教えていただけませんでしょうか。 ブラウザ上で動作させたいので、JavaAppletにて組んでいます。 import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class sample extends Applet{ private int[] xpos = new int[35]; private int[] ypos = new int[35]; private int num = 0; Image imgs; public sample(){ addMouseListener(new MyMouseAdapter()); } public void init(){ imgs = getImage(getDocumentBase(),"sample.gif"); } public void paint(Graphics g){ g.drawImage(imgs,0,0,this); g.setColor(Color.red); for(int i = 0; i < num; i++){ g.fillOval(xpos[i]-2, ypos[i]-2, 4, 4); } } class MyMouseAdapter extends MouseAdapter { public void mouseClicked(MouseEvent e){ if(num >= 35){ return; } int x,y; x = e.getX(); y = e.getY(); xpos[num] = x; ypos[num] = y; num++; Graphics g = getGraphics(); g.setColor(Color.red); g.fillOval(x-2, y-2, 4, 4); } } }

  • Javaアプレットについてですが

    Javaアプレットでボタンを押したら数字が増えるものを作っているのですがどうもうまく動きません。 ソースは下の通りです。 変更しなければいけないところがあるならお願いします。 import java.applet.Applet; import java.awt.Graphics; import java.awt.Button; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Sample7 extends Applet implements Runnable, ActionListener { Button bt; int num; public void init() { bt = new Button("開始"); add(bt); bt.addActionListener(this); Thread th; th = new Thread(this); th.start(); } public void actionPerformed(ActionEvent ae) { public void run() { try{ for(int i=0; i<11; i++){ num = i; repaint(); Thread.sleep(1000); } } catch(InterruptedException e){} } } public void paint(Graphics g) { String str = num + "です。"; g.drawString(str, 50, 50); } }

    • ベストアンサー
    • Java
  • テキストフィールドの文字をテキストエリアに表示する

    エラーも例外もないです。 但し今回の内容の"テキストフィールドに打ち込みエンターキーを文字をテキストフィールドに表示" が満たしてないですとりあえずソース乗せます mport java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class MyMemo { public static void main(String[] args) { JFrame Frame = new JFrame("課題"); Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Frame.setSize(500, 500); Frame.setLocationRelativeTo(null); Container contentPane = Frame.getContentPane(); // テキストフィールドのインスタンスを生成 final JTextField text = new JTextField();// テキストエリアのインスタンスを生成 text.addActionListener(new MyActionListener()); Frame.setVisible(true); final JTextArea Area = new JTextArea(5,0); // スクロールペインにテキストエリアを追加 JScrollPane scrollPane = new JScrollPane(Area); // パネルをコンポーネントに配置 contentPane.add(text, BorderLayout.NORTH); contentPane.add(scrollPane, BorderLayout.CENTER); Frame.setVisible(true); } static class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { } } } どう文字をテキストエリアに表示したらいいのかわからなくて質問させていただきました。 よろしくお願いします。

    • ベストアンサー
    • Java
  • java applet

    import java. applet.*; import java. awt. Button; import java. awt. Label; import java. awt. TextField; import java. awt. event.*; public class 1120 extends Applet implements ActionListener { private TextField box1 = new TextField(5); private TextField box2 = new TextField(5); private TextField box3 = new TextField(5); private Label moji1 = new Label(" と "); private Label moji2 = new Label(" の和は "); private Label moji3 = new Label(" である。 "); private Button ok = new Button("OK"); public void init() { resize( 320 , 240); add( box1 ); add( moji1 ); add( box2 ); add( moji2 ); add( box3 ); add( moji3 ); add( ok ); ok.addActionListener( this ); } public void actionPerformed( ActionEvent e ) { int i=0 ,j =0 , k; String t1 = box1.getText(); String t2 = box2.getText(); i = Integer.parseInt( t1 ); j = Integer.parseInt( t2 ); k = i + j; String s = Integer.toString( k ); box3. setText( s ); } } //上記のプログラムを書いたのですが、なぜかエラーが出てしまいます。勿論、自分でも見直しましたが、その理由がわかりませんでした。知識のある方、ご回答の方お願いします。

  • javaアプレットでのy=x^2のグラフ

    javaアプレットでy=x^2のグラフを描写したいのですが、現在の状態ではグラフの右側しか画面に現れません。軸の移動をすればよいと思うのですが、どのように修正すればよいのでしょうか? import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; public class test1 extends Applet{ public void paint(Graphics g){ g.setColor(Color.red); int x,yp=100,xp=0; for(x=0;x<200;x++){ int y=(int)(x*x)*(-1)+100; g.drawLine(xp,yp,x,y); xp = x; yp = y; } } }

  • Javaのアプレットについて質問です。

    星型の図形をアプレットビューワ上でマウスを押した場所に移動させたいのですが・・・ import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; import java.awt.Font; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import java.awt.Polygon; public class Enshu1_5 extends Applet implements MouseListener { int px []={100,80,10,70,40,100,160,130,190,120}; int py []={10,75,75,113,190,140,190,113,75,75}; private Polygon poly = new Polygon(px,py,10 ); public void init() { addMouseListener(this); } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void paint(Graphics g) { g.setColor(Color.red); g.fillPolygon(poly); g.setFont(new Font("serif",Font.BOLD,24)); g.drawString("Star",100,200); } } こんな感じでつくってみたのですが現在位置とクリック位置との差分割り出し方をpublic void mouseClicked(MouseEvent e)の所に書きたいのですが普通にpoly.translate( e.getX(), e.getY() );をしてしまうと原点からの移動になってしまうため、フィールド上にint x=0,y=0をつくりmouseClickedのところで if(e.getX()>x&&e.getY()>y) { int dx=e.getX()-x; int dy=e.getY()-y; x=dx; y=dy; poly.translate(dx,dy); repaint(); }の様な感じで考えられる条件を条件分岐していこうと思ったのですがどうもうまくいきませんしかなりかさばったものになってしまうと思います。何かいい方法はないでしょうか? 教えて下さい><

    • ベストアンサー
    • Java