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

时间:2016-11-04 14:27:06

标签: java mouseevent mouselistener

尝试通过在特定区域内单击来选择颜色时遇到问题。 当点击该区域时,它有时不响应点击,当选择不同的颜色时,它将重复上一个和当前的颜色。

@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

1 个答案:

答案 0 :(得分: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");

    }

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