Java 画图程序。框架区域鼠标按下的问题

Java paint program. Issues with frame area mouse press

尝试通过在特定区域内单击 select 颜色时遇到问题。 当点击该区域时,它有时不会响应点击,当 select 使用不同的颜色时,它会重复以前和当前的颜色。

@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");

    }

我该如何解决这个问题?我改用 class 级别变量来计算单元格宽度,以消除粗心的错误。控制台中的调试颜色消息没有任何意义,为什么它在按下鼠标时不会切换到新颜色,而不是等待我双击或单击不同的颜色。

Link完整PaintPanel.java源代码:

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

您需要使用 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");

    }

这样,当其中一个条件为真时,程序将不会检查其余条件是否为真。