मैंने फ्रेम.सेट देखा (सत्य); मेरे सभी घटक के बाद कोई जीयूआई विंडो पॉप आउट नहीं हुआ

यह कंसोल शो है

Exception in thread "main" java.lang.IllegalArgumentException: adding container's parent       to itself
at java.awt.Container.checkAddToSelf(Unknown Source)
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at assignment2.Sales.createGUI(Sales.java:71)
at assignment2.Sales.main(Sales.java:95)

यह मेरी sales.java है

package assignment2;

import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.GridLayout;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Sales{

String paymentmethod[] = {"Visa","Master"};

JRadioButton crunchy1 = new JRadioButton("Crunchy Combo 1 - RM 19.70",true);
JRadioButton crunchy2 = new JRadioButton("Crunchy Combo 2 - RM 26.90");
JRadioButton hotvariety = new JRadioButton("Hot Variety Box - RM 28.28");
JRadioButton hotpower1 = new JRadioButton("Hot Power Meal 1 - RM 22.90");
JRadioButton hotpower2 = new JRadioButton("Hot Power Meal 2 - RM 53.90");
ButtonGroup gp = new ButtonGroup();

JLabel item = new JLabel("Select Item");    
JLabel quantity = new JLabel("Quantity: ");
JLabel payment = new JLabel("Payment Method: ");
JLabel creditcard = new JLabel("Credit Card number: ");
/*item.setHorizontalAlignment(JLabel.LEFT);
quantity.setHorizontalAlignment(JLabel.LEFT);
payment.setHorizontalAlignment(JLabel.LEFT);
creditcard.setHorizontalAlignment(JLabel.LEFT);*/

JTextField quantitytext = new JTextField(10);
JTextField creditCardtext = new JTextField(10);
JTextArea commenttext = new JTextArea();

JComboBox cmbPayment = new JComboBox(paymentmethod);

JButton done = new JButton("DONE!");

public void createGUI(){

    JFrame frame = new JFrame("Point of Sales");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    gp.add(crunchy1);
    gp.add(crunchy2);
    gp.add(hotvariety);
    gp.add(hotpower1);
    gp.add(hotpower2);

    JPanel all = new JPanel();
    all.setLayout(new GridLayout(3,1));

    JPanel panelItem = new JPanel();
    panelItem.setLayout(new GridLayout(1,2));

    JPanel panelOption = new JPanel();
    panelOption.setLayout(new GridLayout(4,2));

    JPanel panelSales = new JPanel();
    panelSales.setLayout(new GridLayout(5,2));

    frame.add(all);
    frame.add(panelItem);
    frame.add(panelOption);
    frame.add(panelSales);

    panelItem.add(item);
    panelOption.add(panelOption);
    panelOption.add(crunchy1);
    panelOption.add(crunchy2);
    panelOption.add(hotvariety);
    panelOption.add(hotpower1);
    panelOption.add(hotpower2);

    panelSales.add(quantity);
    panelSales.add(quantitytext);
    panelSales.add(payment);
    panelSales.add(cmbPayment);
    panelSales.add(creditcard);
    panelSales.add(creditCardtext);
    panelSales.add(done);

    frame.add(commenttext);

    frame.setSize(500,400);
    frame.pack();
    frame.setVisible(true);
}

public static void main(String args[]){
    Sales sale = new Sales();
    sale.createGUI();
}
}

मेरे त्रुटि लॉग शो में से एक]

Internal Error
Timed out while retrieving the attached javadoc for JComponent [in JComponent.class [in javax.swing [in C:\Program Files\Java\jre7\lib\rt.jar]]]

जैसा कि मैंने गाइड और कुछ फोरम पढ़ा है, वे कहते हैं कि यह वास्तव में फ्रेम.सेट दृश्य (सत्य) डालने की सिफारिश है; सभी घटक जोड़े जाने के बाद।

मुझे नहीं पता कि क्यों मेरा ग्रहण एडीटी, मुझे इस तरह की त्रुटि दिखाता है, मुझे अब कोई जानकारी नहीं है।

0

1 उत्तर

मुझे लगता है कि यह लाइन आपको परेशानी का कारण बन रही है

panelOption.add(panelOption);

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

0
जोड़ा
यह हल हो गया और मेरा जीयूआई पहले से प्रदर्शित कर सकता है। एक और छोटा सवाल यह है कि frame.setLayout (नया फ़्लोलाउट ()); और frame.setBounds (100,100,500,400); क्या मुझे createGUI() या पीठ के सामने रखा जाना चाहिए? @Dylan
जोड़ा लेखक Nick, स्रोत
ठीक उल्लेख किया है। सहायता के लिए धन्यवाद
जोड़ा लेखक Nick, स्रोत
आपने उस कोड को createGUI() विधि के अंदर रखा है। उदाहरण के लिए अपने "setDefaultClose .." के बाद। (लेकिन सेट से पहले (सत्य) विधि!)
जोड़ा लेखक Dylan Meeus, स्रोत