버튼을 사용할 수없는 곳으로 만들었습니다. 활성화 할 수있는 유일한 방법은 필드에 텍스트를 입력하는 것입니다.텍스트 백 스페이스 확인 문제
여기 내 코드입니다 : 내가 백 스페이스 모든 텍스트를 지울 때마다
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
class checkText extends DocumentFilter {
public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text,
AttributeSet attrs) throws BadLocationException {
super.replace(fb, offset, length, text, attrs);
main.enableButton();
}
}
public class main extends JFrame {
static JFrame inputFrame = new JFrame();
static JTextField myTextfield = new JTextField(10);
static JButton myButton = new JButton("Test");
public main() {
inputGUI();
}
private static void inputGUI() {
inputFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
inputFrame.setTitle("The INPUT");
inputFrame.setLayout(new FlowLayout());
inputFrame.setSize(640, 480);
inputFrame.setVisible(true);
inputFrame.setLocationRelativeTo(null);
inputFrame.add(myButton);
DocumentFilter filter = new checkText();
((AbstractDocument) myTextfield.getDocument()).setDocumentFilter(filter);
inputFrame.add(myTextfield);
myButton.setEnabled(false);
}
public static void enableButton() {
myButton.setEnabled(true);
}
public static void main(String args[]) { new main(); }
}
. 버튼은 계속 활성화되어 있습니다. 필드 안에 텍스트가 없을 때 다시 비활성화하려면 어떻게합니까?
당신은 입력의 길이를받을 수 있습니까? 길이가 0 인 경우 0보다 작 으면 – PeerNet
@PeerNet : 가능하지만 복잡합니다. 필터의 메서드에서 문서를 확인하는 것만으로는 충분하지 않습니다. 또한 수퍼 메소드가 문서에 대해 수행 할 작업을 확인해야합니다. DocumentListener를 사용하면 ** 많이 ** 간단 해집니다. –
Kerperlo : 장래에 코드에 들여 쓰기를 사용해보십시오. 플랫 코드는 읽기 및 구문 분석이 매우 어렵습니다. –