尝试通过在特定区域内单击来选择颜色时遇到问题。 当点击该区域时,它有时不响应点击,当选择不同的颜色时,它将重复上一个和当前的颜色。
@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 :(得分: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");
}
这样,当其中一个条件成立时,程序将不会检查其余条件是否为真。