2010-12-30 3 views
0

私はボックスを描画し、それらをラインで接続するアプリケーションで作業しています。各行にはコーナー(点)があります。ユーザーは、行を右クリックしてドットを追加できます。次に、ドットは場所のセットを取得します。ペイント操作は実行されていませんが、システムが終了します

ダイアグラムのペイント方法は、すべての点をループし、その場所に円形のイメージをペイントする必要があるときに、カスタム(単純!return(location!= -1))かどうかをチェックします。

私は本当にデバッグモードで実行されますが、描画しないので、私は聞いています!私はチェックのためにシステムを配置し、それは正常に実行されます。しかしif文は、私が! ifステートメントの前に署名します。私は本当に問題を見つけることができません。

塗装方法:

public void paint(Graphics2D g) { 
    g.setColor(Color.RED);//_lineColor); 
    g.setStroke(new BasicStroke(DEFAULT_LINE_SIZE)); 

    for(Line2D line : _lines) { 
     g.draw(line); 
    } 

    if(_isHover) { 
     for(ConnectionDot dot : _connectionDots) { 
      if(dot.isUserDot()) { 
       System.out.println("YEAH!!!"); 
       //TODO: dot hover? 
       g.drawImage(_icoConnectionNor.getImage(), dot.getX()-8, dot.getY()-8, null); 

       //g.drawString("What?", dot.getX(), dot.getY()); 
      } else { 
       System.out.println("Hell No!"); 

       g.drawString("What?", dot.getX(), dot.getY()); 
      } 
     } 
    } 
} 

ドットクラス:

public class ConnectionDot { 
//... 
private int _userDotQueueLoc; 

/** 
* Create new dot. 
* 
* @param gridController reference to the grid controller. 
* @param grid Grid position of the dot. 
*/ 
public ConnectionDot(GridController gridController, Grid grid){ 
    _gridController = gridController; 
    _gridPos = grid; 
    _userDotQueueLoc = -1; 
} 

/** 
* Create new user dot. 
* 
* @param gridController reference to the grid controller. 
* @param grid Grid position of the dot. 
* @param userDotLocation Location of user dot. 
*/ 
public ConnectionDot(GridController gridController, Grid grid, int userDotLocation){ 
    this(gridController, grid); 
    _userDotQueueLoc = userDotLocation; 
} 

/** 
* Returns true if the dot is custom. 
* 
* @return Flag. 
*/ 
public boolean isUserDot(){ 
    return (_userDotQueueLoc != -1); 
} 

}

コンソール出力: 地獄いいえ! 地獄いいえ! 地獄いいえ! 地獄いいえ! はい! 地獄いいえ! 地獄いいえ! 地獄いいえ! 地獄いいえ! はい! ...あなたはポイントを得る

+1

すぐに役立つように、SSCCE(http://pscode.org/sscce.html)を投稿してください。 –

+0

それはあなたが思うところに描かれてはいけません。 Andrewが言ったように、あなたはSSCCEを掲示する必要があります。 – jzd

+0

[OK] ..ちょうどリンクを見て、本当にそれで何をするか分からない。 (多くの読書:P)しかし、私は問題を発見した。 –

答えて

0

ドットのx/y値が正しくない可能性があります。

(0、0)でストリングをペイントすると、ストリングは表示されません。なぜなら、drawStringはポイントが左上ではなく左下であることを期待しているからです。

もう一方の画像は上/左を使用しているので、8を引いてパネルから画像を移動しています。

しかし、他の人がSSCCEを投稿することが確実であるかどうかを知る唯一の方法を指摘しています。

+0

ありがとう!実際には問題ではありませんでしたが、私はドットの位置を考えさせました。ドットの位置はグリッドであり、グリッド位置ではなくxとy点を追加したaddUserDotメソッドで間違いを犯しました。そのため、位置3020,2393程度で描画していました。 –

0

多分あなたは強制的に画面を再描画する必要がありますか?あなたの行動を読んでいるかもしれませんが、それは表示されません。私は 'Graphics2D'で作業したことがないので、その方法はわかりませんが、簡単に見つけることができます。

+0

これは間違っています。ペイントメソッドが呼び出されるように、printlnがコンソールに表示されます。問題は他のところです。 – jzd

関連する問題