Java 如何设置jFormattedTextField的最小日期?
我正在使用Netbeans IDE用Java编写代码 我想对jFormattedTextField进行限制 有两个jFormattedTextFields。一个是开始日期1。另一个是结束日期2。现在我想把最小日期限制为结束日期。如果有人将2015-07-07作为开始日期,则必须限定为过去的2015-07-06,05,04天。用于添加验证: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
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的作业:-是否要将较早的日期作为结束日期?这与传统背道而驰。