我想覆蓋java.awt.Component中的isEnabled()方法,並將其與JTextArea一起使用。如何重寫JTextArea isEnabled()方法
這就是我所做的。
此代碼片段在Jframe構造函數中調用。
jTextArea1 = new javax.swing.JTextArea(){
@Override
public boolean isEnabled(){
if(getForeground()== new Color(0, 0, 0)){
return true;
}
return false;
}
};
而且當鼠標點擊jTextArea1後面的函數被調用。
private void jTextArea1MouseClicked(java.awt.event.MouseEvent evt) {
if (jTextArea1.isEnabled()) {
jTextArea1.setForeground(Color.GRAY);
jTextArea1.revalidate();
System.out.println("gray");
} else {
jTextArea1.setForeground(Color.BLACK);
jTextArea1.revalidate();
System.out.println("black");
}
}
我正在使用netbeans IDE,因此actionlisteners是自動生成的。
我這樣做的原因是,我想改變鼠標光標,當它超過jTextArea1。如果我簡單地使用setEnabled()方法,當jTextArea1處於「未啓用」狀態時,不會更改光標。因此,這種方式將使jTextArea1始終處於「啓用」狀態,但會在鼠標單擊時啓用和禁用視覺外觀。如果調用了isEnabled()函數,它將假裝單擊鼠標時啓用狀態發生更改。
我的問題是它沒有給我期待的輸出。我最初將文本前景色設置爲非黑色(灰色)。當點擊鼠標時,顏色不會變爲黑色。它打印「黑色」。
哦..一個愚蠢的錯誤..打擾你們這個真的很抱歉。我應該使用equals()而不是equals運算符。 謝謝湯姆。 :) – Niroshan 2010-08-02 12:25:49