2016-11-04 6 views
2

特定の領域をクリックして色を選択しようとすると問題が発生します。 エリアをクリックするとクリックに反応しないことがあり、別の色を選択すると以前の色と現在の色が繰り返されます。Javaペイントプログラム。フレーム領域マウスのプレスに関する問題

@Override 
public void mousePressed(MouseEvent e) { 
    /* 
    * Selecting color 
    */ 
    if(e.getX()>0 && e.getX()<(cwidth) && e.getY()>1 && e.getY()<panelHeight){ 
     c=Color.BLACK; 
     System.out.println("BLACK"); 

    } 
    if(e.getX()>(cwidth) && x1< (cwidth*2) && e.getY()>1 && e.getY()<panelHeight){ 
     c=Color.RED; 
     System.out.println("RED"); 
    } 
    if(e.getX()>(cwidth*2) && x1< (cwidth*3) && e.getY()>1 && e.getY()< panelHeight){ 
     c=Color.GREEN; 
     System.out.println("GREEN"); 

    } 
    if(e.getX()>(cwidth*3) && x1< (cwidth*4) && e.getY()>1 && e.getY()<panelHeight){ 
     c=Color.BLUE; 
     System.out.println("BLUE"); 

    } 

どうすればこの問題を解決できますか?私は、クラスレベルの変数を使ってセルの幅を計算し、不注意なエラーを排除しました。コンソールのカラーメッセージをデバッグすると、ダブルクリックや別の色をクリックするのを待つのではなく、マウスを押したときに新しい色に切り替わらない理由が分かりません。フルPaintPanel.javaのソースコードへ

リンク:

PaintPanel.java - http://pastebin.com/7pay4Paz

+0

問題を解決できましたか? – ItamarG3

答えて

1

あなたがif-elseを使用する必要があります。条件のいずれかに該当する場合、

@Override 
public void mouseClicked(MouseEvent e) { 
    /* 
    * Selecting color 
    */ 
    if(e.getX()>0 && e.getX()=<(cwidth)){ 
     c=Color.BLACK; 
     System.out.println("BLACK"); 

    } 
    else if(e.getX()>(cwidth) && x1=< (cwidth*2)){ 
     c=Color.RED; 
     System.out.println("RED"); 
    } 
    else if(e.getX()>(cwidth*2) && x1=< (cwidth*3)){ 
     c=Color.GREEN; 
     System.out.println("GREEN"); 

    } 
    else if(e.getX()>(cwidth*3) && x1=< (cwidth*4)){ 
     c=Color.BLUE; 
     System.out.println("BLUE"); 

    } 

この道を残りの部分が真であるかどうかはチェックされません。

+0

これは私が最初に持っていたものです。それは問題を解決しません。 BLACKから任意の色に切り替えると、最初のクリックでREDに設定され、2回目のクリックで正しい色に設定されます。そして、一般的には、今でも同じ問題が続いています。 – noVac

+0

@noVacあなたは 'if'sで繰り返し条件を持っていました。また、それを 'mouseClicked'に変更しましたか? – ItamarG3

+0

はい。すみませんでした。ありがとう! – noVac

関連する問題