У вас нет внутреннего способа сделать это.Таким образом, вы можете иметь некоторое условие, чтобы проверить, находится ли дата выбора между минимальной и максимальной датой, и вы можете выдать ошибку, как показано ниже, и вы можете сбросить выбор на любую дату.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.DateTime;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
/**
* The Class RestrictYearInCalender.
*
* @author subash
*/
public class RestrictYearInCalender {
/** The min date. */
private static Date minDate;
/** The max date. */
private static Date maxDate;
/** The format. */
private static SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
/**
* The main method.
*
* @param args the arguments
*/
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Calender");
shell.setLayout(new RowLayout());
Calendar cal = Calendar.getInstance();
/* Set the minimum */
cal.set(1970, 0, 0);
minDate = cal.getTime();
/* Set the maximum */
cal.set(2030, 0, 0);
maxDate = cal.getTime();
DateTime calendar = new DateTime(shell, SWT.CALENDAR);
calendar.addListener(SWT.Selection, new Listener()
{
@Override
public void handleEvent(Event arg0)
{
/* Get the selection from the calender drop down*/
int day = calendar.getDay();
int month = calendar.getMonth() + 1;
int year = calendar.getYear();
/* Parse the selection */
Date newDate = null;
try
{
newDate = format.parse(day + "/" + month + "/" + year);
}
catch (ParseException e)
{
return;
}
/* Compare it to the minimum and maximum */
if(newDate.after(maxDate) || newDate.before(minDate))
{
/* Set to the maximum or maximum according to requirement*/
Calendar cal = Calendar.getInstance();
cal.setTime(minDate);
calendar.setMonth(cal.get(Calendar.MONTH));
calendar.setDay(cal.get(Calendar.DAY_OF_MONTH));
calendar.setYear(cal.get(Calendar.YEAR));
MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", "Range selection should be between 1970-2030");
}
}
});
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}