我正在嘗試開發一個組件可以通過監聽器與其他組件通信的GUI界面。我所面對的問題是: -如何處理java swing組件事件而不會造成凌亂的課堂?
方法
- 實施聽衆
- 使用匿名方法
- 從實施聽衆
問題
- 實施聽衆造成混亂試圖用大量的對象
- 同1除了構造函數需要總決賽匿名方法
- 廣東話對象進行操作的聽力課之外打交道時對對象的操作而不訴諸於靜態引用。
這是因爲,我怎樣才能得到一個MouseListenerClass畫上一個JPanel是不通過的JPanel到mouseListenerClass做就可以操作一個獨立的JFrame類的角色真是令人沮喪。
我似乎工作的唯一方法是創建一個名爲MouseState的Enum,當鼠標事件MousePressed被觸發時,它將靜態Enum mouseStatus設置爲按下,然後JPanel paintComponent方法檢查Enum mouseStatus並繪製如果theres a按。
這似乎是錯誤的方式。
還有別的辦法嗎?
更新,以反映西里爾註釋: -
感謝@Cyrille我不得不用鑄造修改你的代碼,但前提仍然有效。 「 公共無效的mousePressed(的MouseEvent E){
PaintPanel p=(PaintPanel) getTargetPanel();
p.setMousePressed(true);
p.setMouseCoords(e.getPoint());
}
public void mouseReleased(MouseEvent e) {
PaintPanel p=(PaintPanel) getTargetPanel();
p.setMousePressed(false);
}
public JPanel getTargetPanel() {
return targetPanel;
}'
謝謝@Cyrille我不得不通過使用cast來修改你的代碼,但前提仍然有效。 'code' \t公共無效的mousePressed(的MouseEvent E){ \t \t \t \t \t \t PaintPanel P =(PaintPanel)getTargetPanel(); \t \t p.setMousePressed(true); \t \t p.setMouseCoords(e.getPoint()); \t} \t \t 公共無效的mouseReleased(的MouseEvent E){ \t \t PaintPanel P =(PaintPanel)getTargetPanel(); \t \t p.setMousePressed(false); \t} \t公共的JPanel getTargetPanel(){ \t \t返回targetPanel; \t}' – user2054388