نيتبانز ماتيس-الوصول جفريم مكون من فئة أخرى
-
21-12-2019 - |
سؤال
يتم حظر رمز ماتيس من نيتبانز.المشكلة لدي هي أنني يجب أن setBackground
إلى أ JLabel
من فئة أخرى في حزمة مختلفة ولكن لا أستطيع أن أفعل هذا لأنني لا أملك الوصول إلى JLabel
نظرا لرمزها الخاص والمحظور.
هل ثار أي حل لهذا?
المحلول
"يتم حظر رمز ماتيس من نيتبانز"
يمكنك تحريره كما رأينا هنا
"لأنني لا أملك الوصول إلى جلابيل بسبب رمزها الخاص والمحظور"
مجرد كتابة getter
طريقة التسمية في الفئة الأخرى
public class OtherClass .. {
private JLabel jLabel1;
public JLabel getLabel() {
return jLabel1;
}
}
import otherpackage.OtherClass;
public class MainFrame extends JFrame {
private OtherClass otherClass;
...
private void jButtonActionPerformed(ActionEvent e) {
JLabel label = otherClass.getLabel();
label.setBackground(...)
}
}
"الوصول إلى مكون جفريم من فئة أخرى"
يبدو أنك تستخدم إطارات متعددة.انظر استخدام جفراميس متعددة, ممارسة جيدة / سيئة?
تحديث
"لدي الإطار الرئيسي المحرز في ماتيس ولكن نظرا لبعض الأسباب لا بد لي من تعيين خلفية حقل النص داخل ماتيس من فئة أخرى عندما يحدث التحقق من صحة س في فئة أخرى"
ما يمكنك القيام به بعد ذلك هو تمرير إشارة من Main
الإطار إلى فئة أخرى ، ولها setter
في ال Main
الإطار.شيء من هذا القبيل (وسوف توفر واجهة للوصول)
public interface Gettable {
public void setLabelBackground(Color color);
}
public class Main extends JFrame implements Gettable {
private JLabel jLabel1;
private OtherPanel otherPanel;
public void initComponents() {
otherPanel = new OtherPanel(Main.this); // see link above to edit this area
}
@Override
public void setLabelBackground(Color color) {
jLabel1.setBackground(color);
}
}
public class OtherPanel extends JPanel {
private Gettable gettable;
public OtherPanel(Gettable gettable) {
this.gettable = gettable;
}
private void jButtonActionPerformed(ActionEvent e) {
gettable.setLabelBackground(Color.RED);
}
}
نصائح أخرى
- إنشاء مستمع للفئة مع جلابيل مع طريقة لتغيير خلفية التسمية
- تنفيذه في الفصل حيث يتم استخدام جلابيل
- تعيين المستمع من فئة أخرى ( التي تريد تغيير بغ) ليكون المستمع من الطبقة مع جلابيل
- تغيير الخلفية بعد أي وظيفة تريد.