जावा, दूसरे वर्ग से नए जेएफआरएएम खोलने स्विंग

मेरे पास कोड का यह टुकड़ा है:

public class GUI extends JFrame {
private PlaneUI planeui;

public GUI(PlaneUI planeui) {
    this.planeui = planeui;
}

//We have put the code that creates the GUI inside a method
public GUI() {
   start();
   planeui.display();
} ...

यह सिर्फ एक परीक्षण है और प्रोग्राम शुरू होने पर काम करने के लिए "planeui.display" विधि की आवश्यकता है, विधि "प्रारंभ ();" विधि के साथ जो पहले से ही काम करता है।

public final class PlaneUI extends JFrame {

public void display() {
    //Creates a new JPanel object
   JPanel panelStart = new JPanel();
   getContentPane().add(panelStart);

   //Changing the default layout from Flowlayout to absolute
   panelStart.setLayout(null);

   setTitle("Reservationer"); //Sets the window title
   setSize(236, 256); //Sets the default size of the window
   setLocationRelativeTo(null); //Start location of the window (centered)
   setDefaultCloseOperation(EXIT_ON_CLOSE); //Exits the window
}
}

मैंने आवश्यक पुस्तकालयों को आयात किया है और मुझे लगता है कि समस्या किसी ऑब्जेक्ट में निहित है जो ठीक से नहीं बनाई गई है क्योंकि मुझे nullpointerexception मिलता है। मैंने मुख्य विधि में इस विमानयूआई कक्षा को चलाने की कोशिश की और यह सही ढंग से काम किया। मैं इसे इस तरह काम करने के लिए नहीं मिल सकता ..

0
EXIT_ON_CLOSE JVM को समाप्त कर देगा, इसलिए जब आप PlaneUI को बंद करते हैं, तो यह आपके एप्लिकेशन से बाहर निकल जाएगा
जोड़ा लेखक MadProgrammer, स्रोत
कई फ़्रेम का उपयोग करने के लिए यह उत्तर देखें।
जोड़ा लेखक Paul Samsotha, स्रोत
पैनल को दृश्यमान करने के अलावा, क्या आपके पास पैनल में कोई घटक हैं? लेआउट प्रबंधक के बिना करना के अनुसार। 1) setLayout (शून्य) को कॉल करके कंटेनर के लेआउट प्रबंधक को शून्य पर सेट करें। 2) प्रत्येक कंटेनर के बच्चों के लिए घटक वर्ग की सेटबाउंड विधि को कॉल करें। 3) घटक वर्ग की पुनर्विचार विधि को कॉल करें।
जोड़ा लेखक DoubleDouble, स्रोत

2 उत्तर

फ़ंक्शन <कोड> PlaneUI.display() एक अंतिम पंक्ति setVisible (true) जोड़ें क्योंकि आप सबकुछ जोड़ रहे हैं लेकिन कुछ भी प्रदर्शित नहीं कर रहे हैं

0
जोड़ा

आपको इसे अपने display() विधि में जोड़ना होगा:

setVisible (सही);

अन्यथा, आप जो भी कर रहे हैं वह जेएफआरएएम के सभी पहलुओं को स्थापित कर रहा है और जेपीनल को इसमें जोड़ रहा है। आपको इसे बाद में दिखाना होगा।

0
जोड़ा