मैंने लेबल के लिए कस्टम क्लास बनाया है और यह ठीक काम करता है लेकिन मैं जो चाहता हूं वह है। जब भी मैं उस वर्ग से उदाहरण बनाता हूं तो लेबल को अतिरिक्त वापसी योग्य विधि की आवश्यकता के बिना बनाया जाना चाहिए।

कृपया मेरा कोड देखें

class  CustomLabel {

        private  JLabel customLabel;

         public  CustomLabel() {
                createLabel();
         }

         private  void createLabel() {
                customLabel = new JLabel("Label test");
         }

         /*
           i do not want to return this                 
          */
          public JLabel getLabel() {
                  return customLabel;
          }

}

class  Booter {

        /*
            calling customLabel
          */
         void createUI() {
                CustomLabel customLabel = new CustomLabel();

                 JPanel jPanel = new JPanel();

                 // this is not working
                 jPanel.add(customLabel);
                 // but if i call extra method that inside customLabel
                 // it works fine but i do not want it
                 jPanel.add(customLabel.getLabel());
                 //i need to do same like java defined component like.
                 JLabel label = new JLabel("Test2");
                 jPanel.add(label); // its is not required getLabel or others
           }
}
2
Abdirahman Tusbahle 13 जून 2019, 23:19

2 जवाब

सबसे बढ़िया उत्तर

यदि आप सीधे इसके कंस्ट्रक्टर का उपयोग करके इसे बनाना चाहते हैं तो आप कक्षा JLabel का विस्तार कर सकते हैं:

import javax.swing.JLabel;

public class CustomLabel extends JLabel {

    public CustomLabel(String text) {
        super(text);
    }
}

और फिर अपने कॉलिंग कोड में, आप यह कर सकते हैं:

class Booter {

    void createUI() {
        CustomLabel customLabel = new CustomLabel("TEST TEXT");

        JPanel jPanel = new JPanel();
        JLabel label = new JLabel("Test2");
        jPanel.add(customLabel);
        jPanel.add(label);
    }
}
1
deHaar 13 जून 2019, 23:36

आप जेएलएबल का विस्तार क्यों नहीं करते?

class  CustomLabel extends JLabel {
  public CustomLabel() {
    super("Label test");
  }
}

class  Booter{

                   /*
                   calling customLabel
                   */
                   void createUI(){
                       jPanel.add(new CustomLabel());


                   }
               }
2
Ankur K Gupta 13 जून 2019, 23:37