/Users/petercappello/NetBeansProjects/56-2014/util/src/BoundedIntegerOptionPane.java |
import javax.swing.JOptionPane;
@author
public class BoundedIntegerOptionPane extends IntegerOptionPane
{
private final int lowerBound;
private final int upperBound;
Constructs an IntegerOptionPane object that used promptString as the user prompt.
@param
@param
@param
public BoundedIntegerOptionPane( String promptString, int lowerBound, int upperBound )
{
super( promptString );
this.lowerBound = lowerBound;
this.upperBound = upperBound;
}
Get the value as an integer of an entered String, ensuring it is within
lower and upper bounds.
@return
@Override
public int getIntValue()
{
int value;
while ( true )
{
value = super.getIntValue();
if ( value < lowerBound )
{
StringBuilder errorString = new StringBuilder();
errorString.append( "Entered value " ).append( value );
errorString.append( " < " ).append( lowerBound );
errorString.append( " lower bound " );
JOptionPane.showMessageDialog( null, errorString, "Less Than Lower Bound", JOptionPane.ERROR_MESSAGE );
}
else if ( upperBound < value )
{
StringBuilder errorString = new StringBuilder();
errorString.append( "Upper bound " ).append( upperBound );
errorString.append( " < " ).append( value );
errorString.append( " entered value " );
JOptionPane.showMessageDialog( null, errorString, "Exceeded Upper Bound", JOptionPane.ERROR_MESSAGE );
}
else
{
break;
}
}
return value;
}
construct a string version of the object.
@return
@Override
public String toString()
{
StringBuilder string = new StringBuilder();
string.append( super.toString() );
string.append( "\nlowerBound: " ).append( lowerBound );
string.append( "\nupperBound: " ).append( upperBound );
return new String( string );
}
Unit test the BoundedIntegerOptionPane class.
@param
public static void main( String[] args )
{
String prompt = "Enter an int i such that 0 <= i <= 10";
BoundedIntegerOptionPane boundedIntegerOptionPane = new BoundedIntegerOptionPane( prompt, 0, 10 );
System.out.println( boundedIntegerOptionPane );
System.out.println( boundedIntegerOptionPane.getIntValue() );
}
}