2013-04-02 50 views
0

此刻,當我打FfJAVA - 如何單一的keyPressed之間切換字符「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(),當我打fF再次

感謝

+0

請什麼目標 – mKorbel

回答

1

所以事情是,如果你點擊F/F您轉到填多邊形,並按下F/F再次將調用其他的()。

這可以是有狀態的類的典型例子。

在有一流水平在這個屬性。

而且在進入F/F檢查值,並通過一個加一。 再次輸入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(); 
} 

是否還記得切入點將是一個單一的功能,從那裏流委託基於類似於此檢查。

希望這會有所幫助。

+0

@布爾並不能幫助我,因爲如果我移動鼠標,然後多邊形,我充滿 - 消失。 – ron

+0

你應該檢查你的代碼,爲什麼它是空的。只要使用布爾值,什麼都不應該發生。如果變量處理正確。所有以前被調用的函數現在也被調用。 –

+0

好了,什麼使得多邊形的填充消失,鼠標移動,只有當。你想讓我發佈代碼嗎? – ron

0

儲存在像「currentCommand」和「previousCommand」可變先前使用的按鈕。每當你檢測到一個新的輸入時,你就把當前的電流放到前一個,並將新的電流存儲到當前成員中。 或者,如果你想要比最後兩個按鍵更多地使用堆棧。

0

我如何可以進入一些其他的方法,例如other(),當我打fF再次?

您需要引入一個布爾標誌。

這是一個state machine的一個很簡單的例子。