views:

34

answers:

1

I want to override isEnabled() method in java.awt.Component and use it with a JTextArea.

This is what I do.

This code snippet is called inside the Jframe constructor.

jTextArea1 = new javax.swing.JTextArea(){
        @Override
        public boolean isEnabled(){
            if(getForeground()== new Color(0, 0, 0)){
                return true;
            }
            return false;
        }

    };

And when mouse is clicked on the jTextArea1 following funtion is called.

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");
    }
}

I am using netbeans IDE so actionlistners are auto generated.

The reason I'm doing this is, I want to change mouse cursor when it is over jTextArea1. If I simply used setEnabled() method cursor wont change when jTextArea1 is in "not enabled" state. So this way will leave jTextArea1 in the "enabled" state all the time but will give the visual apearence of being enabled and unabled when mouse is clicked on it. And if isEnabled() funtion is called it will pretend that enable state is changed when mouse is clicked.

My problem is it doesnt give the output that I am expecting. I have initally set text foreground colour to non black(gray). When mouse is clicked colour isnt changing to black. And it prints "black".

+1  A: 
getForeground() == new Color(0, 0, 0)

There is no way getForeground() is going to return exactly the same object as you have newly created on the rhs.

Generally, there doesn't seem any need to override a method or even subclass the text component. Keep the state somewhere else.

(Also jTextArea1 isn't a great name.)

Tom Hawtin - tackline
oh.. a stupid mistake.. really sorry for bothering you all with this. I should have used equals() instead of equals operator.Thanks Tom. :)
Niroshan