التسبب في تحديثات إلى spinnernumberModel حتى لو كان الرقم هو نفسه

StackOverflow https://stackoverflow.com/questions/4400845

سؤال

انا املك SpinnerNumberModel و البعض ChangeListenerس.

ولكن يتم إخطار changelisteners فقط عندما يتغير رقم الدوار. هل هناك طريقة لبدء حدث ينتشر إلى changelisteners حتى لو كان رقم الدوار الجديد هو نفس القيمة السابقة؟

هل كانت مفيدة؟

المحلول

يرسل SpinnerNumberModel حدثًا إلى مستمعي التغيير المسجلين في هذه الطرق بالضبط:

1. public void setValue(Object value)
2. public void setStepSize(Number stepSize)
3. public void setMaximum(Comparable maximum)
4. public void setMinimum(Comparable minimum)

في كل من هذه الطرق ، يتم إصدار الحدث فقط IFF ، حيث تم تمرير القيمة حيث تختلف المعلمة فعليًا عن القيمة الحالية.

ومع ذلك ، يمكنك كتابة بنفسك SpinnerModel (على سبيل المثال عن طريق التصنيف الفرعي SpinnerNumberModel) وإطلاق جميع الأحداث التي تريدها. إذا كان تنفيذك يرث من AbstractSpinnerModel, ، مثل SpinnerNumberModel هل سيكون لديك مفيد fireStateChanged الطريقة المتاحة لإرسال الأحداث:

http://download.oracle.com/javase/6/docs/api/javax/swing/abstractspinnermodel.html#firestatechanged ()

نصائح أخرى

ضربني توماس على ذلك ، لكنني توصلت إلى نفس الاستنتاج ، وهنا انتهى بي الأمر:

private static class SpinnerNumberModel2 extends SpinnerNumberModel
{
    public SpinnerNumberModel2(int value, int minimum, int maximum, int stepSize)
    {
        super(value,minimum,maximum,stepSize);
    }
    public void fireUpdate() { super.fireStateChanged(); }
}   
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top