java에서 DocumentListener/DocumentEvent를 사용하여 Windows 명령 프롬프트 또는 유닉스 터미널에서와 같이 JTextField에서 텍스트의 특정 부분을 삭제하지 못하도록하는 방법을 알고 싶습니다. 현재 작업 디렉토리와 과거를 삭제할 수 없습니다> 또는 $JTextField DocumentListener/DocumentEvent
아무도 도와 줄 수 있습니까? 덕분에
java에서 DocumentListener/DocumentEvent를 사용하여 Windows 명령 프롬프트 또는 유닉스 터미널에서와 같이 JTextField에서 텍스트의 특정 부분을 삭제하지 못하도록하는 방법을 알고 싶습니다. 현재 작업 디렉토리와 과거를 삭제할 수 없습니다> 또는 $JTextField DocumentListener/DocumentEvent
아무도 도와 줄 수 있습니까? 덕분에
DocumentListener에서 추가 기능을 사용하는 경우의 문제점은 수신기에서 삭제되거나 편집 된 부분을 다시 태 클할 수 없다는 것입니다. 그렇지 않으면 예외를 수정하려고한다는 예외가 발생합니다. 알림을 받으면 왜 것 알고 그냥 궁금
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
public class Application {
private static final String PREFIX = "Your Input>";
private static final int prefixLength = PREFIX.length();
/**
* @param args
*/
public static void main(String[] args) {
JFrame rootFrame = new JFrame();
JTextField textField = new JTextField(new PromptDocument(), PREFIX, 20);
rootFrame.add(textField);
rootFrame.pack();
rootFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
rootFrame.setVisible(true);
}
private static class PromptDocument extends DefaultStyledDocument {
private static final long serialVersionUID = 1L;
@Override
public void remove(int offs, int len) throws BadLocationException {
if (offs > prefixLength - 1) {
int buffer = offs - prefixLength;
if (buffer < 0) {
len = buffer;
}
super.remove(offs, len);
}
}
}
}
정확히 내가 뭘 원하는지 작동합니다, 그걸 주셔서 감사합니다 :) –
어떻게 내가 현재 경로가 변경 될 것입니다보고 프리 픽스를 변경합니다. –
사용자 지정 문서가 프롬프트의 내용과 길이를 추적 할 수 있도록이를 변경해야합니다. 또한 사용자 지정 문서에 프롬프트를 변경하고 프롬프트 후에 내용을 가져 오는 메서드를 추가 할 것입니다. 프롬프트를 설정하는 방법은 사용자 정의 문서로 덮어 쓰기 때문에 프롬프트를 변경하기 위해 super의 메소드를 사용해야합니다. 나는 이미 http://www.box.net/shared/jjbzrz8fqe에 예제를 썼다. – Klarth
: 내가 아는 가장 쉬운 방법은 문서 하위 클래스 가 문서에을 제거 무시하고 아래에있는 내 예에서와 같이 문서를 사용하여 텍스트 필드를 설정하는 것입니다 너는 그걸 할 필요가 있니? JLabel을 가질 수없고 그 옆에 JTextField가 있습니까? 이름 : ______ – sateesh
내가 궁금해서 JTextField에서 수행하는 방법을 알고 싶습니다. 그런 식으로하고 싶다면 여기에 질문하지 않을 것입니다. 그래도 감사합니다. –