Java 如何设置jFormattedTextField的最小日期?

Java 如何设置jFormattedTextField的最小日期?,java,swing,date,awt,jformattedtextfield,Java,Swing,Date,Awt,Jformattedtextfield,我正在使用Netbeans IDE用Java编写代码 我想对jFormattedTextField进行限制 有两个jFormattedTextFields。一个是开始日期1。另一个是结束日期2。现在我想把最小日期限制为结束日期。如果有人将2015-07-07作为开始日期,则必须限定为过去的2015-07-06,05,04天。用于添加验证: final JFormattedTextField startDateField = ...; JFormattedTextField endDateFiel

我正在使用Netbeans IDE用Java编写代码

我想对jFormattedTextField进行限制

有两个jFormattedTextFields。一个是开始日期1。另一个是结束日期2。现在我想把最小日期限制为结束日期。如果有人将2015-07-07作为开始日期,则必须限定为过去的2015-07-06,05,04天。

用于添加验证:

final JFormattedTextField startDateField = ...;
JFormattedTextField endDateField = ...;

((AbstractDocument)endDateField.getDocument()).setDocumentFilter(new DocumentFilter(){
    @Override
    public void remove(FilterBypass fb, int offset, int length) throws BadLocationException{
        StringBuilder content = new StringBuilder(fb.getDocument().getText(0, fb.getDocument().getLength()));
        content.replace(offset, offset + length, "");
        if(isValidEndDate(content.toString()))
            super.remove(fb, offset, length);
    }

    @Override
    public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException{
        StringBuilder content = new StringBuilder(fb.getDocument().getText(0, fb.getDocument().getLength()));
        content.insert(offset, string);
        if(isValidEndDate(content.toString()))
            super.insertString(fb, offset, string, attr);
    }

    @Override
    public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException{
        StringBuilder content = new StringBuilder(fb.getDocument().getText(0, fb.getDocument().getLength()));
        content.replace(offset, offset + length, text);
        if(isValidEndDate(content.toString()))
            super.replace(fb, offset, length, text, attrs);
    }

    boolean isValidEndDate(String endDate){
        //check whether endDate is <= startDateField.getText()
    }
});

我认为JFormattedTextField不会处理这个问题,但是请检查out@m.cekiera哦首先感谢您的回复,先生。如果有一个jTextField也能做到这一点的话,这没问题。我只是使用了jformattedtextfields,因为我不想对日期格式的限制进行编码。先生,您有jTextField的方法吗。请看AbstractFormatter,我肯定我在这里发布了几次第2条。使用SpinnerDateModel的JSpinner的作业:-是否要将较早的日期作为结束日期?这与传统背道而驰。