2013-10-27 5 views
1

У меня есть текст по умолчанию, установленный в текстовом поле, как программа удаляет этот текст, когда пользователь фокусируется на текстовом поле. Vice-Versa, когда пользователь не фокусируется на текстовом поле, возвращается текст по умолчанию.Текстовое поле Java foucusing

Я думал о добавлении события действия в TF, но это работает только тогда, когда пользователь вводит кнопку ввода, сосредоточившись на TF. Будет ли поток работать?

ответ

3

Рассмотрите возможность добавления FocusListener в JTextField. В методе focusGained(FocusEvent e) вы можете проверить текст JTextField и, если он точно соответствует тексту предварительного просмотра, удалите его. В методе focusLost(FocusEvent e) вы проверяете, является ли JTextField пустым, и если да, добавьте текст по умолчанию.

myTextField.addFocusListener(new FocusListener() { 
    public void focusGained(FocusEvent e){ 
    // get text from JTextField 
    // if text matches default text, either select all, so user can keep it or change it 
    // or delete it --- your choice 
    } 

    public void foucsLost(FocusEvent e){ 
    // check if JTextField's text is empty. 
    // if so, cal setText(DEFAULT_TEXT) on the field 
    } 
}); 
+0

Спасибо за обоих ответов , Это помогло мне больше всего, наконец-то научилось это делать, Еще раз спасибо обеим народам :) – Arc

0

Вы можете вызывать эти функции на любые Ваши JTextFields

public void FocusGainedEmptyBox(JTextField txt) 
{ 
    txt.setText(null); 
} 

public void FocusLostFillBox(JTextField txt) 
{ 
    if(!txt.getText().equals("")) 
    { 
    txt.setText("I am Back"); 
    } 
} 

вызов FocusGainedEmptyBox (txtValue) на Фокус Приобретенный и FocusLostFillBox (txtValue) на Фокус Lost.

0

Добавление и удаление текста из текстового поля может вызвать проблемы, если вам когда-либо понадобится использовать DocumentListener в текстовом поле, чтобы знать, когда изменяется текст.

Для другого решения этой проблемы зайдите в Text Prompt.

0

Я думаю, что вы хотите сделать такой же, как, как HTML-заполнитель,

private void txtSearchStandardFocusLost(java.awt.event.FocusEvent evt) {            
     // TODO add your handling code here: 
     if (txtSearchStandard.getText().equals("")) { 
      txtSearchStandard.setText(" Type Here to Search Standard"); 
      txtSearchStandard.setForeground(Color.GRAY); 
     } 

    }           

    private void txtSearchStandardFocusGained(java.awt.event.FocusEvent evt) {            
     // TODO add your handling code here: 
     if (txtSearchStandard.getText().equals(" Type Here to Search Standard")) { 
      txtSearchStandard.setText(""); 
     } 

     txtSearchStandard.setForeground(Color.BLACK); 
    } 

Но Имейте в виду, об этом всякий раз, когда вы пытаетесь добавить еще одно событие на этом же TextField

Смежные вопросы