2011-03-03 21 views

cevap

5

Kısa cevap: Hayır düğmesine basıldığında hangi bilmenin bir yolu yoktur

Uzun cevap : Yeni değer ve önceki değer arasında bir karşılaştırma yaparsanız modeline ve değişim dinleyici bağlı, bu mümkün kullanıcının ileri veya geri gittiğini bilmek.

1

Olayı tetikleyen nesneyi inceleyebilirsiniz. Belki de, etkinlikten önceki değeri kaydedin ve etkinlik sırasında yukarı veya aşağı gidip gitmediğini belirleyin.

0

Gerçek değeri bir öncekiyle karşılaştırın.

ChangeEvent ce = ... 
((JSpinner)ce.getSource()).getPreviousValue(); 
+1

Sanırım bu, bir sonraki değeri daha önce seçilen değere değil, geçerli değerden aşağıya döndürecektir. – jzd

0

Eski değerini saklayarak eski değerine karşı yeni değeri kontrol edebilirsiniz: İşte nasıl

int currentValue = spinner.getValue(); 
spinner.addChangeListener(new javax.swing.event.ChangeListener() { 
    public void stateChanged(javax.swing.event.ChangeEvent e) { 
     int value = spinner.getValue(); 
     if(value > currentValue) { 
      // up was pressed 
     } else if(value < currentValue) { 
      // down was pressed 
     } 
     currentValue = value; 
    } 
}); 
+0

evet, anlıyorum, ama yapmak istediğim, JSpinner'ı geçerli değerin adım boyutunu tutması ve artırım/azaltma düğmelerinin adım adım gereği gui'mdeki başka bir alanı değiştirmek için kullanılmasıdır. Dolayısıyla, görüntülenen adım değerini manuel olarak değiştirdiğimde, sonraki ve önceki değerler her zaman aynı kalır. Açıklamamın yeterince açık olup olmadığını bilmiyorum. Çözümünüz için zaten teşekkürler – Heisenbug

+0

@Overbose - bu durumda, belki de diğer değeriniz 'SpinnerModel' dinlemeniz mi istiyorsunuz? Bu iyi bir çözüm olabilir gibi görünüyor. – justkt

0

JSpinner kompozit bileşenidir, bu içerdiği bileşenlere mouseListeners eklemek mümkündür . Düğmeleri birbirinden ve metin alanından nasıl ayırt edeceğinizi öğrenmek için biraz deneme yapmanız gerekir. Hızlı ve kirli bir yol, koordinatlarını kontrol etmek olurdu.

JSpinner'ın kendisi veya JSpinner.getEditor() tarafından döndürülen kapsayıcının içerdiği bileşenlerin üzerinde yinelemek istediğinizden emin değilim, bu nedenle her ikisini de deneyin.

İlgili konular