Ik ben bezig met het schrijven van een programma waarbij de gebruiker op een aantal plaatsen een waarde in moet vullen, die normaal gesproken ligt tussen de 0 en 1000. Ik heb een eigen component geschreven dat verantwoordelijk is voor het opvangen en valideren van die waarde.
Ik heb dit eerst opgelost met een extensie van JFormattedTextField, maar kwam tot de conclusie dat het gebruiksvriendelijker was om daar een JSpinner van te maken. Aangezien dat op de achtergrond stiekum ook een JFormattedTextField is (iig met de DefaultEditor), was de verandering niet zo groot.
Waar ik nu mee zit zijn echter twee dingen die ik niet voor elkaar krijg:
* het opvragen van de nieuwe waarde van het component. getValue() en getText() (van de onderliggende editor) refereren beiden naar de oude waarde en de nieuwe wordt ook niet in het event meegestuurd of iets dergelijks. Een call naar getNextValue() geeft alleen de waarde aan waar een druk op de spinknop naartoe zou 'spinnen'.
* het controleren of de gebruiker aan het 'spinnen' is. Ik wil mijn events pas afvuren wanneer de gebruiker de waarde heeft gevonden die hij wil gebruiken (wanneer hij de muis of de pijl-omhoog/omlaag-knop loslaat). Bij bijvoorbeeld een JSlider bestaat er een waarde 'getValueIsAdjusting'. Deze zit niet in de JSpinner of het event. Ik heb nog gepoogt er Mouse- en KeyListeners op te zetten, maar die events lijken niet aan te komen (waarschijnlijk onderschept door de JSpinner). Uiteraard heb ik de eventListeners wel aan het component gehangen.
Is er iemand met wat JSpinner ervaring die mij kan vertellen hoe ik deze problemen kan oplossen?
Ik heb dit eerst opgelost met een extensie van JFormattedTextField, maar kwam tot de conclusie dat het gebruiksvriendelijker was om daar een JSpinner van te maken. Aangezien dat op de achtergrond stiekum ook een JFormattedTextField is (iig met de DefaultEditor), was de verandering niet zo groot.
Waar ik nu mee zit zijn echter twee dingen die ik niet voor elkaar krijg:
* het opvragen van de nieuwe waarde van het component. getValue() en getText() (van de onderliggende editor) refereren beiden naar de oude waarde en de nieuwe wordt ook niet in het event meegestuurd of iets dergelijks. Een call naar getNextValue() geeft alleen de waarde aan waar een druk op de spinknop naartoe zou 'spinnen'.
* het controleren of de gebruiker aan het 'spinnen' is. Ik wil mijn events pas afvuren wanneer de gebruiker de waarde heeft gevonden die hij wil gebruiken (wanneer hij de muis of de pijl-omhoog/omlaag-knop loslaat). Bij bijvoorbeeld een JSlider bestaat er een waarde 'getValueIsAdjusting'. Deze zit niet in de JSpinner of het event. Ik heb nog gepoogt er Mouse- en KeyListeners op te zetten, maar die events lijken niet aan te komen (waarschijnlijk onderschept door de JSpinner). Uiteraard heb ik de eventListeners wel aan het component gehangen.
Is er iemand met wat JSpinner ervaring die mij kan vertellen hoe ik deze problemen kan oplossen?
Localhost is where the heart is