2011-02-13 8 views
0

인쇄 할 텍스트 필드를 초기화 할 수 있는지 궁금한가요? (이 부분은 어떻게 수행하는지 알고 있습니다.) 그러나 인쇄가 강조 표시 된 다음 사용자가 입력을 시작하면 사라질까요? 강조 표시가 없어도 필드를 "전화 번호를 입력하십시오."와 같이 초기화 한 다음 어떻게 사라져 사용자가 텍스트를 삭제할 필요가 없습니까? 그것은 않는 경우JTextField 포커스 질문

답변

5

입니다. jTextArea1에서 사용자 유형 뭔가가 초기 텍스트가 즉시 대체됩니다 때마다

String initialText = "Enter your story here..."; 
    ... 
    jTextArea1.setText(initialText); 
    ... 

    private void focusGained(java.awt.event.FocusEvent evt) { 
     if (jTextArea1.getText().equals(initialText)) { 
      //jTextArea1.setSelectionStart(0); 
      //jTextArea1.setSelectionEnd(jTextArea1.getText().length()); 
      jTextArea1.selectAll(); 
     } 
    } 

이 방법 : 그냥 초기 텍스트를 표시합니다.

+1

또는 JTextArea에서 선택 시작 및 끝을 설정하는 대신 selectAll()을 호출하십시오. –

+2

고맙습니다! selectAll()이 더 좋습니다. –

+0

나는 실제로 코스 티스 (Costis)의 제안으로 끝을 맺었다. 매력처럼 작동합니다. 감사! 마지막 2 개의 버그를 찾아 내면 끝났습니다. – unit

5
  • 은 알려진 텍스트가 있는지 확인하기 위해 JTextField를 인스턴스 확인)
  • 가의 focusGained에서 FocusListener
  • 을 (구현 "전화 번호를 입력하십시오"와 같은 몇 가지 알려진 텍스트로 JTextFiled 인스턴스를 초기화하고 텍스트를 지우십시오; 그렇지 않다면 아무 것도하지 마십시오.

는 여기에 또 다른 방법은의 focusGained 이벤트와,이 코드 샘플

final String INITIAL_TEXT = "Please enter your ph. number"; 
    final JTextField textField = new JTextField(INITIAL_TEXT); 
    textField.addFocusListener(new FocusListener() { 

     @Override 
     public void focusGained(FocusEvent e) { 
      if (textField.getText().equals(INITIAL_TEXT)) { 
       textField.setText(""); 
      } 

     } 

     @Override 
     public void focusLost(FocusEvent e) { 

     } 
    }); 
+0

거룩한 쓰레기. 고맙습니다! 죄송하지만, @override는 무엇입니까? – unit

+0

주석입니다. 여기에 대한 설명서가 있습니다. http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Override.html –

+0

흠 ... 나는 텍스트 필드에 이름을 얻기 위해 프로그램을 작성하려고합니다. 필드에서 이름없이 포커스를 잃을 때 이름을 묻는 메시지가 나타납니다. 지금 내가 위에서 제안한 것처럼 할 때, 내 콤보 상자에서 기능을 잃게됩니다 (그러나 내 JList는 여전히 작동하며 내 체크 박스처럼). 그것으로 무엇을 제공합니까? 내 포커스 손실에 대한 코드가 있습니다 : – unit

2

focusLost 사용자가 아무 것도 입력하지 않으면 초기 텍스트를 되돌릴 수 있습니다. 그래서 같이 : 당신이 focusLost 방법을 사용하지 않으려면

public void focusLost(FocusEvent e) 
{ 
    // If the field is empty, set the default text when losing focus. 
    if (inputField.getText().isEmpty()) 
    { 
     inputField.setText(INITIAL_TEXT); 
    } 
} 

또는, 당신은, 당신은 단지 당신이 사용하려는 방법을 구현해야 그런 식으로 내부 클래스 FocusAdapter 확장 MyFocusListener을 만들 수 있습니다.

private class MyFocusListener extends FocusAdapter 
{ 
    public void focusGained(FocusEvent e) 
    { 
     // do your magic! 
    } 

    // ignore the focusLost method 
} 
+0

어댑터는 두 가지 방법이기 때문에이 경우에 너무 많은 이득을 얻지는 못한다.하지만 어댑터 패턴은 대부분의 Listener 인터페이스에 대해 존재한다. 특히 MouseAdapter는 MouseListener와 MouseWheelListener를 모두 구현한다는 점에서 매우 유용하며 모든 마우스 동작에서 원하는 메서드 만 구현할 수 있습니다 (상당수가 있습니다) –

-1
public boolean isCorrect() { 
    data = new String[6]; 
    for (int i = 0; i < informationLabel.length; i++) { 
     if (i == 0) { 
      if (!informationTextField[i].getText().equals("")) { 
       data[i] = informationTextField[i].getText(); 
      } 
      else 
       return false; 
     } 
     if (i == 1 || i == 2) { 
      if (informationPasswordField[i - 1].getText().equals("")) 
       return false; 
     } 
     if (i == 3 || i == 4 || i == 5 || i == 6) { 
      if (!informationTextField[i - 2].getText().equals("")) { 
       data[i - 1] = informationTextField[i - 2].getText(); 
      } 
      else 
       return false; 
     } 
    } 
    return true; 
} 
+0

정보를 추가 할 수 있습니까? – Rob

관련 문제