2016-11-04 62 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切換到任何顏色,它將在第一次點擊時設置爲紅色,並在第二次點擊時設置爲正確的顏色。並且一般仍然存在相同的問題。 – noVac

+0

@noVac你在'if's中有一個重複的條件。此外,你是否將其更改爲'mouseClicked'? – ItamarG3

+0

是的。對不起,沒有注意到你改變了方法。謝謝! – noVac