Swing JSpinner nur mit Buttons ändern

Gimbi

Neues Mitglied
Hallo,
wie kann ich verhindern, dass der User den Wert eines JSpinners durch tippen mit der Tastatur setzt.
Es soll nur möglich sein, den Wert über die kleinen Pfeile zu verändern.
Gruß Gimbar
 
Keine Ahnung obs noch anders geht.
Java:
((JSpinner.DefaultEditor) button.getEditor()).getTextField().setEnabled(false);

oder

((JSpinner.DefaultEditor) button.getEditor()).getTextField().setEditable(false)
 
Hallo,

du könntest auch versuchen, die gesamte Tastatur zu blockieren, wenn der JSpinner den Fokus hat. Wenn der JSpinner den Fokus wieder verliert, mußt du natürlich die Tastatur wieder freigeben.
Du könntest es auch so gestallten, daß man zwar keine Zeichen in den JSpinner eingeben kann, diesen trotzdem aber mit der Tastatur steuern kann. (Auf- und Abzählen - ich glaube das geht mit den Pfeil rauf/runter-Tasten.)

Schau dir mal diesen Code an: http://www.java-forum.org/awt-swing-swt/106609-thread-problem-darstellung-beim-sperren-fensters.html#post682175

Du brauchst eigendlich nur die Methode mbehandleAWTEventListener() und die Klasse GlassPaneTastaturListener.

MfG
hansmueller
 
Sobald Änderungen am Model vorgenommen werden, muss der Editor erneut deaktiviert werden.
 
Java:
class UneditableEditor extends JTextField implements ChangeListener
	{
		JSpinner spinner;
		public UneditableEditor(JSpinner spinner)
		{
			super();
			this.spinner=spinner;
			Color bg=this.getBackground();
			this.setEditable(false);
			this.setBackground(bg);
			spinner.addChangeListener(this);
		}
		@Override
		public void stateChanged(ChangeEvent e)
		{
			this.setText(spinner.getValue().toString());
		}
	}
 
Ah, hübsch! Den setzt man dem JSpinner mittels.setEditor(...) und ruhe is!
 
Zuletzt bearbeitet von einem Moderator:
Verzeih' das extreme doubleposting, aber meinen Beitrag bekomme ich nicht mehr geändert.

Folgendes tut auch, was gewünscht ist:

Java:
spinner.setEditor(new JSpinner.DefaultEditor(spinner));
 

Zurück
Oben