[Java] Aanpassen representatie van getal in JSpinner

Pagina: 1
Acties:

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-07 21:46

Confusion

Fallen from grace

Topicstarter
In een applicatie die ik gemaakt heb kan via een JSpinner component, met een SpinnerNumberModel als model, een aantal minuten worden ingevoerd. Nu zou het echter handig zijn als in dit JSpinner component het aantal minuten ook in uu:mm formaat in zou kunnen worden gevoerd. Natuurlijk is dit slechts representatie: het ding moet wel een aantal minuten (uu*60+mm) blijven geven als resultaat van getValue().

Nu is mijn vraag: wat is de Goede Manier is om dit te bereiken. Het geheel van de JSpinner met het SpinnerModel, het interne JSpinner.[iets]Editor component met daarin een JFormattedTextField, met daar weer Formatters en Formatterfactories is voor mij een paar stappen te complex om helder te kunnen overzien hoe dit geheel werkt. Met name de manier waarop ik zelf een Formatter en/of een FormatterFactory zou moeten maken om dit te bereiken is me enigszins onduidelijk (ligt aan mij of aan de API?). Ik ben geneigd een PropertyChangeEvent van de value van het element af te vangen en de string van het textfield ad hoc te veranderen, maar mijn gevoel zegt me dat dat niet de Goede Manier is (bovendien moet ik dan toch al rommelen in het Model van de JSpinner, wat ook al niet zo prettig is, aangezien ik uiteindelijk met integers wil werken en het puur representatie is dat het probleem is).

Kan iemand met verstand van dit soort Design Patterns een hint geven waar ik het beste in kan grijpen en indien dat het zelf schrijven van een Formatter / FormatterFactory is: welke methoden moet ik dan overriden?

Wie trösten wir uns, die Mörder aller Mörder?


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik heb verder nog nooit gewerkt met een JSpinner, maar bij de andere Swing components is het gebruikelijk om dit soort detail visualisatie gedrag op te lossen mbv een Renderer. Hiermee kan jij aangeven hoe je iets gevisualiseerd wilt hebben.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik zie dat idd de Renderer niet aanwezig is |:( en dat je dus zelf een editor component erin moet zetten. Hierin moet je idd een JComponent plaatsen om het te visualiseren.

zie:
http://java.sun.com/produ...les/merlin/specs/ftf.html
voor meer uitleg :)

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-07 21:46

Confusion

Fallen from grace

Topicstarter
Als ik het goed begrijp hoef ik dus alleen een DefaultFormatter te extenden en de valueToString en stringToValue methoden te overriden, waarbij ik dus zelf goed moet weten wat ik gecreeerd heb, zodat ik het resultaat van stringToValue daarheen kan casten (wat ik overigens niet zo heel netjes vind, maargoed).

Wie trösten wir uns, die Mörder aller Mörder?


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-07 21:46

Confusion

Fallen from grace

Topicstarter
Het zou prettig zijn als je gewoon de source van zo'n bestaande Formatter kon bekijken...

Wie trösten wir uns, die Mörder aller Mörder?

Pagina: 1