jSpinner przekroczenie zakresu + zablokowanie edycji z klawiatury

0

Witam
W komponencie jSpinner mam limit np. 30, chciałbym aby przy takiej wartości próba zwiększenia skutkowała jakaś tam akcją. Druga sprawa jak zablokować możliwość edycji jSpinnera z klawiatury ?
Z góry dzięki za odpowiedzi, pozdro :)

0

Ok znalazłem rozwiązanie na pierwszy task :)

deklaruję sobie zmienną globalną wartoscSpinnera, a po initComponents wpisuję do niej aktualną wartość Spinnera
i ustawiam sobie listenera

private void jSpinnerStateChanged(javax.swing.event.ChangeEvent evt) {                                         
    int value=Integer.parseInt(jSpinner.getValue().toString());
    if(value>wartoscSpinnera)
    {System.out.println("rosnie");}
    else if(value < wartoscSpinnera)
    {System.out.println("maleje");}
    wartoscSpinnera=value;
    }

ups jednak to nie działa tak do końca bo jeśli mam powiedzmy 1 i próbuję zmniejszyć jego wartosc to wtedy jSpinnerStateChanged nie jest wywoływany i wykrycie przekroczenia zakresu nie jest możliwe ; )

0

jSpinner ma coś takiego jak SpinnerNumberModel.
Dokumentację i przykład masz tu:
http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/SpinnerNumberModel.html

edit, jednak nie ma tam jak spiąć model ze spinnerem, pełen przykład:

 int min = 0;
int max = 100;
int step = 5;
int initValue = 50;
SpinnerModel model = new SpinnerNumberModel(initValue, min, max, step);
JSpinner spinner = new JSpinner(model);

Z klawiaturą nie wiem, ale po co Ci to? Podejrzewam, że do tego, żeby zablokować możliwość wpisywania głupot? Jeśli tylko po to, to chyba lepiej wyłapywać głupoty wpisane w warunek, tam gdzieś jest rzucany: IllegalArgumentException, wystarczy go obsłużyć.

0

No tak klawiaturę można obsłużyć dodając warunki przy KeyTyped więc to rzeczywiście nie jest problem, cały czas nie wiem jak rozwiązać ten pierwszy problem bo byłby to fajny feature :)

0

Edycje możesz zablokować tak

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1