896 * the {@code setLabelTable} documentation.
897 *
898 * @param increment distance between labels in the generated hashtable
899 * @param start value at which the labels will begin
900 * @return a new {@code Hashtable} of labels
901 * @see #setLabelTable
902 * @see #setPaintLabels
903 * @exception IllegalArgumentException if {@code start} is
904 * out of range, or if {@code increment} is less than or equal
905 * to zero
906 */
907 public Hashtable createStandardLabels( int increment, int start ) {
908 if ( start > getMaximum() || start < getMinimum() ) {
909 throw new IllegalArgumentException( "Slider label start point out of range." );
910 }
911
912 if ( increment <= 0 ) {
913 throw new IllegalArgumentException( "Label incremement must be > 0" );
914 }
915
916 class SmartHashtable extends Hashtable implements PropertyChangeListener {
917 int increment = 0;
918 int start = 0;
919 boolean startAtMin = false;
920
921 class LabelUIResource extends JLabel implements UIResource {
922 public LabelUIResource( String text, int alignment ) {
923 super( text, alignment );
924 setName("Slider.label");
925 }
926
927 public Font getFont() {
928 Font font = super.getFont();
929 if (font != null && !(font instanceof UIResource)) {
930 return font;
931 }
932 return JSlider.this.getFont();
933 }
934
935 public Color getForeground() {
936 Color fg = super.getForeground();
945 }
946
947 public SmartHashtable( int increment, int start ) {
948 super();
949 this.increment = increment;
950 this.start = start;
951 startAtMin = start == getMinimum();
952 createLabels();
953 }
954
955 public void propertyChange( PropertyChangeEvent e ) {
956 if ( e.getPropertyName().equals( "minimum" ) && startAtMin ) {
957 start = getMinimum();
958 }
959
960 if ( e.getPropertyName().equals( "minimum" ) ||
961 e.getPropertyName().equals( "maximum" ) ) {
962
963 Enumeration keys = getLabelTable().keys();
964 Object key = null;
965 Hashtable hashtable = new Hashtable();
966
967 // Save the labels that were added by the developer
968 while ( keys.hasMoreElements() ) {
969 key = keys.nextElement();
970 Object value = getLabelTable().get( key );
971 if ( !(value instanceof LabelUIResource) ) {
972 hashtable.put( key, value );
973 }
974 }
975
976 clear();
977 createLabels();
978
979 // Add the saved labels
980 keys = hashtable.keys();
981 while ( keys.hasMoreElements() ) {
982 key = keys.nextElement();
983 put( key, hashtable.get( key ) );
984 }
985
|
896 * the {@code setLabelTable} documentation.
897 *
898 * @param increment distance between labels in the generated hashtable
899 * @param start value at which the labels will begin
900 * @return a new {@code Hashtable} of labels
901 * @see #setLabelTable
902 * @see #setPaintLabels
903 * @exception IllegalArgumentException if {@code start} is
904 * out of range, or if {@code increment} is less than or equal
905 * to zero
906 */
907 public Hashtable createStandardLabels( int increment, int start ) {
908 if ( start > getMaximum() || start < getMinimum() ) {
909 throw new IllegalArgumentException( "Slider label start point out of range." );
910 }
911
912 if ( increment <= 0 ) {
913 throw new IllegalArgumentException( "Label incremement must be > 0" );
914 }
915
916 class SmartHashtable extends Hashtable<Object, Object> implements PropertyChangeListener {
917 int increment = 0;
918 int start = 0;
919 boolean startAtMin = false;
920
921 class LabelUIResource extends JLabel implements UIResource {
922 public LabelUIResource( String text, int alignment ) {
923 super( text, alignment );
924 setName("Slider.label");
925 }
926
927 public Font getFont() {
928 Font font = super.getFont();
929 if (font != null && !(font instanceof UIResource)) {
930 return font;
931 }
932 return JSlider.this.getFont();
933 }
934
935 public Color getForeground() {
936 Color fg = super.getForeground();
945 }
946
947 public SmartHashtable( int increment, int start ) {
948 super();
949 this.increment = increment;
950 this.start = start;
951 startAtMin = start == getMinimum();
952 createLabels();
953 }
954
955 public void propertyChange( PropertyChangeEvent e ) {
956 if ( e.getPropertyName().equals( "minimum" ) && startAtMin ) {
957 start = getMinimum();
958 }
959
960 if ( e.getPropertyName().equals( "minimum" ) ||
961 e.getPropertyName().equals( "maximum" ) ) {
962
963 Enumeration keys = getLabelTable().keys();
964 Object key = null;
965 Hashtable<Object, Object> hashtable = new Hashtable<Object, Object>();
966
967 // Save the labels that were added by the developer
968 while ( keys.hasMoreElements() ) {
969 key = keys.nextElement();
970 Object value = getLabelTable().get( key );
971 if ( !(value instanceof LabelUIResource) ) {
972 hashtable.put( key, value );
973 }
974 }
975
976 clear();
977 createLabels();
978
979 // Add the saved labels
980 keys = hashtable.keys();
981 while ( keys.hasMoreElements() ) {
982 key = keys.nextElement();
983 put( key, hashtable.get( key ) );
984 }
985
|