2016-04-28 13 views
0

ここに私がしたかったことがあります。テキストフィールドがあり、ユーザーは自分が望むものを入力します。たとえば、「長方形」や「長方形」、「円」、「円」などです。ユーザーがボタンを押します。このプログラムは、ユーザーが下に書き留めた図形を描画した後に表示されます。私は "ペイント"機能自体を使うことができませんでした。それは何とか悪くなった。だから私は "paintRec"などを使用しました。しかし、私はそれがOOPによれば真実ではないと思います。ですから、この問題を解決する正当な方法を教えてください。そこに間違ったコーディングがたくさんあります。それは確かだ。どうすればいいのか教えてください。どこが間違っているのですか?ありがとう。Javaアプレットユーザ入力による図形の描画

public class extends Applet implements ActionListener{ 
TextField tf; 
Button draw; 

public void init(){ 
    tf = new TextField(10); 
    draw = new Button("Draw"); 
    draw.addActionListener(this); 
    add(tf); 
    add(draw); 
} 

public void actionPerformed(ActionEvent e) { 
    String shape = tf.getText(); 
    if (shape.equals("rectangle") || shape.equals("RECTANGLE")) 
    { 
     paintRec(null); 
    } 
    if (shape.equals("circle") || shape.equals("CIRCLE")) 
    { 
     paintCirc(null); 
    } 
} 

public void paintRec(Graphics g){ 
    g.drawRect(30,30,50,60); 
} 
public void paintCirc(Graphics g){ 
    g.drawOval(30, 30, 50, 60); 
} 
} 
+0

まずはクラス名がなくても – 3kings

+0

1)なぜアプレットを作成するのですか?教師がそれを指定している場合は、[CS教師が** Javaアプレットを教えるのを止めるべき理由](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop-teaching-java-applets /)を使用します。 2)なぜAWTを使用するのですか? Swingに賛成するコンポーネントを使用してAWTを放棄する理由は、[この回答](http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978)を参照してください。 –

+0

@Andrewはい、そうです。情報をいただきありがとうございます。私はもっ​​と勉強が大好きです。私は間違いなくそれらのリンクを見ていきます。私の先生にも送ってください。 –

答えて

1

問題はここにある:

public void actionPerformed(ActionEvent e) { 
    String shape = tf.getText(); 
    if (shape.equals("rectangle") || shape.equals("RECTANGLE")) 
    { 
    paintRec(null);//passing null value to a method which has Graphics class instance and using it for drawing 
    } 
    if (shape.equals("circle") || shape.equals("CIRCLE")) 
    { 
     paintCirc(null);//same here 
    } 
} 

良い方法は常にあるpaint()メソッドを使用して再描画()メソッドを呼び出します。以下のコードを使用してください:

import java.applet.Applet; 
import java.awt.event.*; 
import java.awt.*; 

/* 
<applet code = "Demo.class" width = 400 height = 200> </applet> 
*/ 

public class Demo extends Applet implements ActionListener{ 
    TextField tf; 
    Button draw; 
    String shape = "rectangle";//drawing rectangle by default 

    public void init(){ 
    tf = new TextField(10); 
    draw = new Button("Draw"); 
    draw.addActionListener(this); 
    add(tf); 
    add(draw); 
    } 

    public void actionPerformed(ActionEvent e) { 
    shape = tf.getText(); 
    repaint(); 
    } 

    public void paint(Graphics g){ 
    super.paint(g); 
    if (shape.equals("rectangle") || shape.equals("RECTANGLE")) 
    { 
     g.drawRect(30,30,50,60); 
    } 
    if (shape.equals("circle") || shape.equals("CIRCLE")) 
    { 
     g.drawOval(30, 30, 50, 60); 
    } 
    else 
    { 
     //notify to enter the correct input 
    } 
    } 
} 
+0

注: 'shape.equals(" rectangle ")|| shape.equals( "RECTANGLE") 'は' shape.toLowerCase()。equals( "rectangle")に短縮できます) ' –

+0

@Avinashありがとうございました!それは魅力のように機能し、私は今日何かを学んだ。私は間違いを理解しており、私はそれらをもう一度やりません。 –

+0

@Andrewは私のコードをきれいに保ちました。ありがとう! –

関連する問題