2010-05-25 13 views
14

Ich erstelle Zeitauswahl mit einem JSpinner. Der Text innerhalb der JSpinner ist editierbar. Aber ich möchte die JSpinner als nicht editierbar festlegen, da es die Möglichkeit gibt, einen ungültigen Wert zu geben. Kann mir jemand helfen?Wie setze ich JSpinner als nicht editierbar ein?

+0

Können Sie auf jfpoilpret Antwort kommentieren, wenn es oder nicht geholfen? Und wenn ja, akzeptiere es als das Richtige? – fish

Antwort

24

Versuchen Sie Folgendes:

JSpinner spinner = ...; 
((DefaultEditor) spinner.getEditor()).getTextField().setEditable(false); 

Dies sollte funktionieren, solange Sie nicht den Spinner-Editor selbst durch den Aufruf spinner.setEditor(...) geändert haben.

Sagen Sie uns, wenn dies hilft.

+0

Ich habe Ihren Code geändert, es funktioniert gut. JSpinner ampm = neuer Jspinner(); JFormattedTextField ampmspin = ((JSpinner.DefaultEditor) ampm.getEditor()). GetTextField(); ampmspin.setEditable (falsch); Vielen Dank ......... – Arivu2020

+0

Ich musste dies hinzufügen, nachdem ich das Listenmodell des Spinner eingestellt habe. Dann hat es geklappt. –

+0

Wenn ich dies versuche, kann der Spinner noch bearbeitet werden, indem Sie auf den Pfeil klicken! – yelliver

9

etwas kürzer:

JSpinner spinner = new JSpinner(); 
spinner.setEditor(new JSpinner.DefaultEditor(spinner));