- PR -

始めまして、初心の者です、

1
投稿者投稿内容
Ino
会議室デビュー日: 2006/03/28
投稿数: 3
投稿日時: 2006-03-28 12:00
1 JPanelをマウスでクリック(点A)
2 マウスを移動すると点Bが動き、そのつど線分ABが描画される
3 再びクリックし線を固定

というのをやりたいのですが、2 がうまくいきません

BufferedImage img = null;
 BufferedImage jimg = null;

public void mouseMoved( MouseEvent e )
 {
jimg = img;
RepaintManager.currentManager(this).setDoubleBufferingEnabled(true);
setOpaque(true);

p2.setLocation((double)e.getX(),(double)e.getY());

if(jimg == null){
Dimension d = this.getSize();
int w = d.width;
int h = d.height;
jimg = (BufferedImage)c1.createImage(w,h);}

Graphics2D img2d = (Graphics2D)jimg.createGraphics();
img2d.setStroke(new BasicStroke(1.0F,BasicStroke.CAP_ROUND ,BasicStroke.JOIN_ROUND));
img2d.setPaint(Color.black);

if(!p1.equals(p2)){
line.setLine(p1,p2);
img2d.draw(line);
p1.setLocation(p2);}

  moved = true;
img2d.dispose();
repaint();
}


public void mouseClicked( MouseEvent e )
{
if(sen){
p1.setLocation((double)e.getX(),(double)e.getY());
jimg = img;
sen = false;}

else{
p2.setLocation((double)e.getX(),(double)e.getY());

if(img == null){
Dimension d = this.getSize();
int w = d.width;
int h = d.height;
img = (BufferedImage)c1.createImage(w,h);}

Graphics2D img2d = (Graphics2D)img.createGraphics();
img2d.setStroke(new BasicStroke(jwidth ,BasicStroke.CAP_ROUND ,BasicStroke.JOIN_ROUND));
img2d.setPaint(pencolor);

if(flag){
img2d.drawImage(img,0,0,null);
flag = false;}

if(!p1.equals(p2)){
line.setLine(p1,p2);
img2d.draw(line);
p1.setLocation(p2);}

img2d.dispose();
repaint();
sen = true;
mov = false;}}
}

って言う風にやっているのですが直線が描かれません
どのようにすればいいのでしょうか
お願いします
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2006-03-28 12:50
あえてストレートな返答をしません。

まず、マウスとは関係なしに「JPanelに直線(位置は固定)を描画する」ことを実現しましょう。
それから、座標をマウスで変更できるように書き換えましょう。

ちなみに、このプログラムを書くのに何か参考にした書籍かwebサイトはありますか ? 差し支えなければ紹介してください。
# ダメ書籍/サイトのおそれがあります。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-03-28 14:54
まずは、HNを変更しましょう。
端っから逃げ腰でいいわけを吐いているようでは、身に付くものも身に付きませんよ。

びしばしさんが書かれているとおりですが、
プログラミングは、
 1.動くものを作る
 2.動くものをいじくって、動くものを作る
の繰り返しだけです。
これだけは、ベテランも初心者も同じだと思うんですけどねえ。

いや、ごくたまにすごい人もいることはいますよ。でも、そんな人外は参考にならないし。
Ino
会議室デビュー日: 2006/03/28
投稿数: 3
投稿日時: 2006-03-28 20:10
ありがとうございます
直線は描けるのですが、線がマウスについて来ないのです
参考にしたページは
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23176&forum=12&7です

もっと自力で考えて、あれこれいじくってみます
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2006-03-28 22:07
[ CODE ] [/ CODE ]
でくくっていただくとプログラムが読みやすいので助かるのですが。

後,適度に何処で何をしてて何処でうまくいってないのか
コメントも欲しいです。
Ino
会議室デビュー日: 2006/03/28
投稿数: 3
投稿日時: 2006-03-29 00:24
あれこれいじくった結果うまくいきました
自分のコードには無駄な、変なところが多々あったようです

みなさん、レスありがとうございました
1

スキルアップ/キャリアアップ(JOB@IT)