2017-02-01 9 views
0

これはスタックの私の最初の質問ですので、どのようにより良い次回を行う方法をアドバイスします:) 私はカップルの四角形で構成されるリストを作成しました。私は、リスト内の四角形と、この長方形上のドラッグされ解放されたJLabbelとの間の交差をチェックするために、このリストをループすることを試みています。私のアプローチは次のとおりです:ループの長方形のArrayListを介してループを確認する

public void mouseReleased(MouseEvent e) { 
    Component comp = (Component) e.getSource(); 
    Point locOnScreen = e.getLocationOnScreen(); 
    int x = locOnScreen.x - initialLocOnScreen.x + initialLoc.x; 
    int y = locOnScreen.y - initialLocOnScreen.y + initialLoc.y; 
    boundsSet(x, y, comp);//method to limit dragging space in contentPane 

    List<Rectangle> placeHolder = new ArrayList<Rectangle>(); 

    placeHolder.add(leftDesk); 
    placeHolder.add(leftPainting); 
    placeHolder.add(underBed); 
    placeHolder.add(onBed); 
    placeHolder.add(centerPainting); 
    placeHolder.add(window); 
    placeHolder.add(wardrobe); 

    for (Rectangle holder : placeHolder) { 
     if (holder.intersects(comp.getBounds())) { 

      JOptionPane.showMessageDialog(null, "Correct place !"); 
      GameStatus.points += 10; 
      GameStatus.nrOfItems--; 
      if (GameStatus.points == 50) 
       GameStatus.level++; 

     } else 
      comp.setLocation(initialLoc); 
    } 
} 

私は、四角形に適切な座標(何百回もチェックされている)を設定しました。問題は、List内の最初の矩形との交差点だけを検出することです。別の配置済みの矩形にラベルをドラッグすると、検出されません。何か案は?

+0

あなただけの1つの長方形それらのすべてではないと、それをチェックように見えます。 –

+2

'' ....だから、次回はもっとうまくやってくれるとアドバイスしてくれます... " - 有効な[mcve]や[SSCCE](http://sscce.org)を作成して投稿することを検討してください。 。 –

+0

本当に 'else'ブランチが必要ですか?なぜここにいるのか分かりません。最初のチェックの後、コンポーネントの位置が変更されているようです。 – Zefick

答えて

1

私はあなたが以下のようにサイクルを変更する必要があると思う:

boolean found = false; 

for (Rectangle holder : placeHolder) { 
    if (holder.intersects(comp.getBounds())) { 

     JOptionPane.showMessageDialog(null, "Correct place !"); 
     GameStatus.points += 10; 
     GameStatus.nrOfItems--; 
     if (GameStatus.points == 50) 
      GameStatus.level++; 
     found = true; 
     break; 
    } 
} 
if (!found) { 
    comp.setLocation(initialLoc); 
} 
+0

@IQVはすでに私の問題を解決しました。私はちょうど前に1つの括弧に "else"ステートメントを入れました... すばらしい返答をありがとうございました! – Baki1790

関連する問題