한 가지를 수행합니다 기본 문서가 버튼 클릭에
final JTextField textField = new JTextField();
final Document defaultDocument=textField.getDocument();
먼저 텍스트 필드에 대한 유효성 검사를 사용하지 않도록 다시 기본 문서를 설정 한 경우 일부 다음을 설정
저장소를 기본 텍스트
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField.setDocument(defaultDocument);
textField.setText("hi");
}
});
문서 필터 추가 다시 사용자 입력을 확인하기 위해 텍스트 필드에 포커스를 맞 춥니 다.
How to implement in Java (JTextField class) to allow entering only digits?을 참조하십시오.
- 편집 -
당신은 text field
에 focus listener
을 추가하여 그것을 할 수 있습니다.
텍스트 필드의 값이 비어 있으면 기본 값을 다시 힌트로 설정하십시오. 버튼 클릭시이를 수행 할 필요가 없습니다.
final JTextField textField = new JTextField("First Name");
final Document defaultDocument = textField.getDocument();
final PlainDocument doc = new PlainDocument();
doc.setDocumentFilter(new DocumentFilter() {
@Override
public void insertString(FilterBypass fb, int off, String str, AttributeSet attr)
throws BadLocationException {
fb.insertString(off, str.replaceAll("\\D++", ""), attr); // remove
// non-digits
}
@Override
public void replace(FilterBypass fb, int off, int len, String str,
AttributeSet attr) throws BadLocationException {
fb.replace(off, len, str.replaceAll("\\D++", ""), attr); // remove
// non-digits
}
});
textField.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
System.out.println("focus lost");
if(textField.getText() == null || textField.getText().trim().length()==0){
textField.setDocument(defaultDocument);
textField.setText("First Name");
}
}
@Override
public void focusGained(FocusEvent e) {
System.out.println("focus gained");
textField.setDocument(doc);
}
});
텍스트 내용? 숫자가 포함되어 있지 않습니까? 본문의 목적은 무엇입니까? – MadProgrammer
그것은 문자 텍스트입니다. 내가 말했듯이 그것은 디폴트 값이다. –
@ Yury Lankovskiy는 흥미로운 질문이 될 수 있습니다. 그러나 여기에 SSCCE/MCVE/MCTRE, short, runnable, 지역 변수의 하드 코드 된 값으로 컴파일 할 수 있습니다. – mKorbel