2011-09-15 3 views
7

मैं इस कोड पर इस त्रुटि हो रही है:अपवाद "मुख्य" java.awt.AWTError: BoxLayout साझा नहीं कर सकते

super("Trace Masker"); 
    setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS)); 

    label1 = new JLabel("Source directory:"); 
    label2 = new JLabel("Target directory:"); 
    label3 = new JLabel("Defect number:"); 
    label4 = new JLabel("Slice tokens:"); 
    label4.setToolTipText("Seperate multiple tokens with comma"); 

    txtSourceDirectory = new JTextField(30); 
    txtTargetDirectory = new JTextField(30); 
    txtDefectNumber = new JTextField(30); 
    txtSliceTokens = new JTextField(30); 

    btnBrowseSourceDirectory = new JButton("..."); 
    btnBrowseTargetDirectory = new JButton("..."); 
    btnStart = new JButton("Start"); 
    btnCancel = new JButton("Cancel"); 

    pnlLabels = new JPanel(new BoxLayout(pnlLabels, BoxLayout.PAGE_AXIS)); 
    pnlText = new JPanel(new BoxLayout(pnlText, BoxLayout.PAGE_AXIS)); 
    pnlBrowseButtons = new JPanel(new BoxLayout(pnlBrowseButtons, BoxLayout.PAGE_AXIS)); 
    pnlTop = new JPanel(new BoxLayout(pnlTop, BoxLayout.LINE_AXIS)); 
    pnlActionButtons = new JPanel(new FlowLayout(FlowLayout.RIGHT)); 

    pnlLabels.add(label1); 
    pnlLabels.add(label2); 
    pnlLabels.add(label3); 
    pnlLabels.add(label4); 

    pnlText.add(txtSourceDirectory); 
    pnlText.add(txtTargetDirectory); 
    pnlText.add(txtDefectNumber); 
    pnlText.add(txtSliceTokens); 

    pnlBrowseButtons.add(btnBrowseSourceDirectory); 
    pnlBrowseButtons.add(btnBrowseTargetDirectory); 

    pnlTop.add(pnlLabels); 
    pnlTop.add(pnlText); 
    pnlTop.add(pnlBrowseButtons); 

    pnlActionButtons.add(btnStart); 
    pnlActionButtons.add(btnCancel); 

    add(pnlTop); 
    add(pnlActionButtons); 

त्रुटि इस लाइन पर है:

pnlLabels.add(label1); 

यह जांचने के लिए कि यह विशेष रूप से pnlLabels से संबंधित है, मैंने इसकी सभी पंक्तियों पर टिप्पणी की। त्रुटि तब होता है पर:

pnlText.add(txtSourceDirectory); 

मैं पहले से ही अन्य 2 सवाल यहां इस बारे में जाँच की और JFrame के लिए setLayout घोषणा ठीक करने के बाद: Question1 Question2

उत्तर

12

आपकी समस्या निम्न पंक्ति से आता है (और अन्य सभी लाइनों एक ही देख):

pnlLabels = new JPanel(new BoxLayout(pnlLabels, BoxLayout.PAGE_AXIS)); 

जब new BoxLayout(...) कहा जाता है, pnlLabels अभी भीहैचूंकि इसे अभी तक असाइन नहीं किया गया है। ऐसा करने का सही तरीका दो चरणों में है:

pnlLabels = new JPanel(); 
pnlLabels.setLayout(new BoxLayout(pnlLabels, BoxLayout.PAGE_AXIS); 

समस्या गायब होनी चाहिए (बशर्ते आप इसे अन्य सभी कोड लाइनों के समान करें)।

+2

1+ 20 सेकंड तक मेरा हराया। :) –

+0

धन्यवाद, यह हल हो गया। – Yoav

संबंधित मुद्दे