テキストフィールドにデフォルトのテキストが設定されています。ユーザーがテキストフィールドにフォーカスしたときに、プログラムはどのようにこのテキストを削除しますか? 逆に、ユーザーがテキストフィールドに集中していない場合、デフォルトのテキストが戻ってきます。
TF にアクション イベントを追加することを考えていましたが、ユーザーが TF にフォーカスしているときに入力ボタンをタップした場合にのみ機能します。スレッドは機能しますか?
テキストフィールドにデフォルトのテキストが設定されています。ユーザーがテキストフィールドにフォーカスしたときに、プログラムはどのようにこのテキストを削除しますか? 逆に、ユーザーがテキストフィールドに集中していない場合、デフォルトのテキストが戻ってきます。
TF にアクション イベントを追加することを考えていましたが、ユーザーが TF にフォーカスしているときに入力ボタンをタップした場合にのみ機能します。スレッドは機能しますか?
JTextField に FocusListener を追加することを検討してください。この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
}
});
これらの関数は、任意の JTextField で呼び出すことができます
public void FocusGainedEmptyBox(JTextField txt)
{
txt.setText(null);
}
public void FocusLostFillBox(JTextField txt)
{
if(!txt.getText().equals(""))
{
txt.setText("I am Back");
}
}
Focus Gained で FocusGainedEmptyBox(txtValue) を呼び出し、Focus Lost で FocusLostFillBox(txtValue) を呼び出します。
HTML placeholder と同じようにしたいと思いますが、
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 に別のイベントを追加しようとするときはいつでも、これについて覚えておいてください