2009-09-19 47 views
1

目前,禁用一個JPanel包括一個方法調用的所有組成部分,我必須覆蓋其禁用方法如下:禁用整個的JPanel包括組件自身內部

@Override 
public void setEnabled(boolean enabled) { 
    super.setEnabled(enabled); 
    Component[] components = getComponents(); 
    if (components != null && components.length > 0) { 
    int count = components.length; 
    for (int i = 0; i < count; i++) 
     components[i].setEnabled(enabled); 
    } 
} 

有沒有做任何的標準方式所以?而是提供我自己的實現?

回答

1

首先,你可以很容易地簡化代碼:

@Override 
public void setEnabled(boolean enabled) { 
    super.setEnabled(enabled); 
    for (Component component : getComponents()) 
     component.setEnabled(enabled); 
    } 
} 

當然,這破壞了組件的任何單個啓用狀態。

通常禁用的組件看起來很糟糕,並在頂部的玻璃面板停止指針輸入,也許增加一個更微妙的視覺效果是要走的路。

你可以採取模型的方法。創建每個組件時,將其授權狀態委託給模型。然後你只需要一個狀態改變來更新所有的組件。這使您可以擁有任意組,並可以實現更復雜的邏輯。

+0

不完全符合我的問題。有沒有任何標準的方法來實現這一目標? –

+0

爲什麼會有? –