プロが教える店舗&オフィスのセキュリティ対策術

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)
{
ーここをどうしたらいいかわかりません・・・ー
}

}

A 回答 (4件)

>交差することをして加えたいとおもっています



交差するということは、元になるものが必要ですが、2回目にボタンを押したときは、最初の線と2本目の線のどちらに対して交差しますか?


なんか、いじめてるみたいに感じるかもしれませんが、プログラムを作るというのは、仕様がはっきりしていないと出来ないものなのです。


「なんだか、よくわからないけど作りたい」では、「何を作るの?」となってしまうのは当然のことです。
    • good
    • 0
この回答へのお礼

ngsvxさま
何度も回答ありがとうございます><
もう少し自分で勉強してみてからもう一度質問すことにしようと考えました。
ありがとうございました

お礼日時:2005/11/18 01:32

以下のような感じにしてはどうですか?



private Vector m_items = new Vector();
public void paint(Graphics g)
{
 Enumeration e = m_items.elements();
 Object item;
 while( e.hasMoreElements() ) {
  item = e.nextElement();
  //描画処理
  //例えばitemが線だったらg.drawLine(xx,xx,xx,xx)など
  //
  //itemを描画オブジェクトクラスとして別に定義しておいて
  //それにどのような描画属性なのかを保持させる
  //ここれはその属性に応じた描画処理を行わせる
  //
  //あるいは描画オブジェクトクラスのスーパークラスとして
  //関数Drawを用意し、ここではそのDrawのみを呼ばせるようにする
 }
}

public void actionPerformed(ActionEvent x)
{
 //押された時の状況に合わせてm_itemsに描画オブジェクトクラスを追加する
 m_items.add( item );
 repaint();
}
    • good
    • 0
この回答へのお礼

回答ありがとうございます
asahina02さまの回答も一つとして考えてみたいと思います。ありがとうございました

お礼日時:2005/11/18 01:33

>後ボタンが押されたら加えられる直線は、


>ある特定の線で常に一定と考えていただければと思います

つまり、

g.drawLine(405,420,655,240);

で描いた線に加えるということでよろしいでしょうか?


この線にどのように加えるのかが未だ不明です。


・延長する
・交差する
・触れていれば何でもいい
・触れていなくてもいい

「加える」と言ってもいろいろ考えられます

この回答への補足

何度ももうしわけありません&有難う御座います
文字数の関係で省略していますが、もっと沢山線をかいているのですが、NGSVX樣が書かれている例を全て出来ればいいなと考えているのですが、もしひとつだけと言われれば
交差することをして加えたいとおもっています。

補足日時:2005/11/17 12:15
    • good
    • 0

>ボタンが押されたら



>されたらすでに描かれている線にさらに線が加わって描かれる

少なくても、これらの意味が不明瞭です。

これでは誰も正確な回答はできません。

回答があったとしても、それは推測にすぎないのであっている保証はありません。


まずボタンですが、カーソルの位置やボタンの種類は何でもいのでしょうか?
「何でもいいからとにかくボタンが押されたら」という意味なのでしょうか?

次に「加わって」ですが、これも加わればどんな加わり方でもいいのでしょうか?

もう一つ、ソースを見ると、

g.drawLine(405,420,655,240);

とありますが、これに線を加えるのでしょうか?

加えられる線は、常に一定なのでしょうか?


など、不明な点が多すぎます。

この回答への補足

足りない部分が多くて申し訳ありません
補足させていただきます
まずカーソルの位置やボタンの種類に関しては
特に指定しません
後ボタンが押されたら加えられる直線は、
ある特定の線で常に一定と考えていただければと思います

補足日時:2005/11/17 09:44
    • good
    • 0

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