2011-09-15 8 views
7
私はこのコードでこのエラーを取得してい

例外はjava.awt.AWTError「メイン」:BoxLayoutを共有することはできません

pnlLabels.add(label1); 
:エラーは、このライン上にある

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に特に関連しているかどうかを確認するために、私はそのすべての行についてコメントしました。私はすでにここにこのことについて、他の2つの質問をチェックしたJFrameのためのsetLayoutの宣言を修正した

pnlText.add(txtSourceDirectory); 

Question1 Question2

答えて

12

あなたの問題は、次の行から来ている(上のエラーは、次に起こります及びそれを見ている他のすべての行):new BoxLayout(...)が呼び出されると

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

pnlLabelsはまだありnullまだ割り当てられていないためです。それを行うための正しい方法は、2つのステップである:

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

問題が消える(その1つに似た他のすべてのコード行のためにあなたが提供する)必要があります。

+2

1+ 20秒でビートします。 :) –

+0

ありがとう、これはそれを解決しました。 – Yoav

関連する問題