2010-08-02 8 views
0

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

나는 actionbeeners가 자동 생성되도록 netbeans IDE를 사용하고 있습니다.

내가 이것을하는 이유는 jTextArea1을 초과하면 마우스 커서를 변경하고 싶다. jTextArea1이 "사용 불가능"상태에있을 때 setEnabled() 메소드 커서를 사용하면 변경되지 않습니다. 이렇게하면 jTextArea1은 항상 "사용 가능"상태로 유지되지만 마우스를 클릭하면 활성화 및 사용 불가능으로 시각적으로 표시됩니다. 그리고 isEnabled() 함수가 호출되면 마우스를 클릭하면 활성화 상태가 변경되는 것처럼 가장합니다.

내 문제는 내가 예상 한 출력을 제공하지 않는다는 것입니다. 처음에는 텍스트 전경색을 비 검정색 (회색)으로 설정했습니다. 마우스를 클릭하면 색상이 검은 색으로 변하지 않습니다. 그리고 "검은 색"을 인쇄합니다.

답변

1
getForeground() == new Color(0, 0, 0) 

getForeground() 당신이 새로 우에서 만든 정확히 같은 객체를 반환하는 것입니다 방법이 없습니다.

일반적으로 메서드를 재정의하거나 텍스트 구성 요소를 서브 클래 싱하지 않아도됩니다. 다른 곳에서 상태를 유지하십시오.

은 (또한 jTextArea1은 좋은 이름이 아닙니다.)

+0

오 .. 바보 같은 실수 ..이 당신의 모든 귀찮게 정말 죄송합니다. equals 연산자 대신 equals()를 사용해야합니다. 감사합니다. Tom. :) – Niroshan

관련 문제