# JSpinner FocusListener



## flash0r (12. Dez 2005)

Hallo, 
ich möchte gerne das Event abfangen wenn jemand einen JSpinner verlässt. Leider funktioniert das mit dem Focuslistener nicht so ganz, das heißt ich bekomme kein Event geliefert.
Wenn ich das ganze mit JTextField versuche bekomme ich die Events ganz normal.
Hier mal eine kleine Beispielklasse:

```
import java.awt.FlowLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.*;

public class FocusTest extends JFrame implements FocusListener{

	JSpinner min,max;
	JTextField t1,t2;
	public static void main(String[] args) {
		FocusTest ft = new FocusTest();

	}
	
	public FocusTest() {
		JFrame f = new JFrame();
		f.getContentPane().setLayout(new FlowLayout());
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		f.setSize(500,500);
		min = new JSpinner();
		max = new JSpinner();
		t1 = new JTextField(5);
		t2 = new JTextField(5);
		t1.addFocusListener(this);
		t2.addFocusListener(this);
		min.addFocusListener(this);
		max.addFocusListener(this);
		f.getContentPane().add(min);
		f.getContentPane().add(max);
		f.getContentPane().add(t1);
		f.getContentPane().add(t2);
		f.setVisible(true);
	}

	public void focusGained(FocusEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void focusLost(FocusEvent e) {
		if (e.getSource()==min) {
			System.out.println("Focus lost @ min");
		}
		if(e.getSource()==max) {
			System.out.println("Focus lost @ max");
		}
		if(e.getSource()==t1) {
			System.out.println("Focus lost @ t1");
		}
		if(e.getSource()==t2) {
			System.out.println("Focus lost @ t2");
		}
		
	}

}
```


----------



## Sky (12. Dez 2005)

JSpinner ist mehr als ein Textfeld. Das Textfeld ist also nur ein Bestandteil des JSpinners; wenn du darauf einen Focuslistener setzen wolltest, würde das ungefähr so aussehen:


```
((JSpinner.DefaultEditor)theSpinner.getEditor()).getTextField().addFocusListener( this );
```

In deinem Listener müsstest Du auch genau auf dieses Element wieder abfragen.


----------



## flash0r (12. Dez 2005)

Funktioniert super, Dankeschön.


----------

