Program that reads a string from the keyboard and tests whether it contains a valid date
First, a few comments about style. 


You shouldn't start variable names with a capital letter, that's used for constants and class names.  So instead of Smonth and Sday, use monthStr and dayStr.
If you put braces around the statement after an if, put them around the else as well.  Your last if/else doesn't do that.
Instead of saying leap == false, say !leap.  


I think the one thing that could make your code look cleaner and clearer would be to move repeated code off into a separate method.  For example, you're repeatedly opening a JOptionPane, getting a value and then converting it to an integer.  Why not put that in a separate method, so you could call:

int month = getValue("Month");


This would reduce the clutter in your main method and have the added advantage that if you wanted to change how you ask the user for values, you would only have to do it in one place.  Do that with your error checking as well and your code improve quite a bit.