سؤال

لدي فئة مخصصة للزر التي ترسم الزر. قبل رسم النص ، تتحقق طريقة الطلاء ما إذا كان الزر قد تم تعيين لون مخصص لاستخدامه بدلاً من uidefaults#get ("button.foreground").

if ((b.getForeground() != null)) {
    colText = b.getForeground();
}

إن إلقاء نظرة على فئة java.awt.component تعطي مشكلة:

public Color getForeground() {
    Color foreground = this.foreground;
    if (foreground != null) {
        return foreground;
    }
    Container parent = this.parent;
    return (parent != null) ? parent.getForeground() : null;
}

لذا فإن التحقق من الزر GetForeGround () مقابل NULL لا يساعد ذلك كثيرًا حيث سيعود اللون الأمامي للمكون الذي يتم وضع الزر عليه.

السؤال هو: كيف يمكنني التحقق مما إذا كان الزر قد تم تعيين لون مقدمة مخصص؟

قد يكون وضع PropertyChangedListener على الزر حلاً ، لكنني أعتقد بطريقة ما أنه يجب أن يكون هناك طريقة أبسط.

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

المحلول

في ال Component يمكنك العثور على isBackgroundSet() طريقة.

نصائح أخرى

تجاوز الطريقة وجعلها تعيد هذا. أو إضافة طريقة جديدة تُرجع ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top