目前,当我点击F
或f
时:
private static final char FILL_POLYGON_LOWERCASE = 'f';
private static final char FILL_POLYGON = 'F';
@Override
public void keyTyped(KeyEvent keyEvent)
{
PolygonFiller polyFiller = new PolygonFiller();
char key = keyEvent.getKeyChar();
switch(key)
{
/**
* Fill the polygons
*/
case FILL_POLYGON:
{
if (greenLightForFilling == true)
{
fillPolygon(polyFiller);
System.out.print("called");
}
break;
} // end FILL_POLYGON
case FILL_POLYGON_LOWERCASE:
{
if (greenLightForFilling == true)
{
fillPolygon(polyFiller);
}
break;
}
...
}
该计划进入fillPolygon(polyFiller);
。
意思是,当我第一次点击f
时,我进入fillPolygon()
。
当我再次点击other()
或f
时,如何进入其他方法,例如F
?
由于
答案 0 :(得分:1)
所以问题是,如果你点击f / F你转到填充多边形,再按f / F会调用其他()。
这可能是有状态类的经典案例。
在班级有一个属性。
在输入f / F时检查值并将其递增1。 在再次输入f / F时,检查该值并将其递增1。
在每次增加之前,你应该检查是否,
//Am assuming that there are more than two functions, else could use boolean
if (value == 1) {
fillpolygon();
}
else if (value == 2) {
other();
}
else if (value == 2) {
some_other();
}
请记住,入口点将是一个单一的功能,从那里根据类似的检查委派流程。
希望这有帮助。
答案 1 :(得分:0)
将之前使用的按钮存储在“currentCommand”和“previousCommand”等变量中。每次检测到新输入时,都会将当前值输入到当前成员中并将新值存储在当前成员中。 或者,如果你想要超过最后两个按键,请使用堆栈。
答案 2 :(得分:0)