2017-11-06 29 views
0

これは簡単な質問です。私は、0,1,2,3、... 10の選択肢を持つJComboBoxを持っています。 JComboBoxで選択されている番号に応じて、GUIにJLabelとJTextFieldを追加します。したがって、番号3を選択した場合、GUIは3つのJLabelと3つのJTextFieldを追加する必要があります。等々。Java - JPanelにJTextFieldとJLabelの配列を追加する

これを達成するためにJLabelsとJTextFieldの配列を使用していますが、実行時にnullポインタ例外が発生しています。ラベルもフィールドも追加されていません。

コード:

private void createComponents() 
{ 
    //Create Action Listeners 
    ActionListener comboListener = new ComboListener(); 

    //Create Components of the GUI 
    parseButton = new JButton("Parse Files"); 
    parseButton.addActionListener(comboListener); 

    numberLabel = new JLabel("Number of Files to Parse: "); 
    String[] comboStrings = { "","1", "2","3","4","5","6","7","8","9","10" }; 
    inputBox = new JComboBox(comboStrings); 
    inputBox.setSelectedIndex(0); 

    fieldPanel = new JPanel();   
    fieldPanel.setLayout(new GridLayout(2,10)); 

    centerPanel = new JPanel(); 
    centerPanel.add(numberLabel); 
    centerPanel.add(inputBox);  

    totalGUI = new JPanel(); 
    totalGUI.setLayout(new BorderLayout()); 
    totalGUI.add(parseButton, BorderLayout.SOUTH); 
    totalGUI.add(centerPanel, BorderLayout.CENTER);   

    add(totalGUI); 
} 

のActionListenerコード:MadProgrammerさんのコメントに

public void actionPerformed(ActionEvent e) 
{   
     JTextField[] fileField = new JTextField[inputBox.getSelectedIndex()]; 
     JLabel[] fieldLabel = new JLabel[inputBox.getSelectedIndex()]; 
     for(int i = 0; i < fileField.length; i++) 
     { 
      fieldLabel[i].setText("File "+i+":"); //NULL POINTER EXCEPTION HERE 
      fieldPanel.add(fieldLabel[i]);   //NULL POINTER EXCEPTION HERE 
      fieldPanel.add(fileField[i]); 
     } 
     centerPanel.add(fieldPanel); 
     repaint(); 
     revalidate(); 
} 
+0

'fieldLabel'と' fileField'には要素が含まれていません。それらにはスペースしかありません。あなたはそれらと対話する前に、各要素に新しい値を割り当てる必要があります – MadProgrammer

+1

それは完璧な意味を持っています。追加:fieldLabel [i] =新しいJLabel(); fileField [i] = new JTextField(); FORループに問題を修正しました。高速応答@MadProgrammerありがとう – Justiciar

+0

[スタックトレースとは何ですか?そして、アプリケーションエラーをデバッグするにはどうすればいいですか?](http://stackoverflow.com/q/3988788/418556)&[Nullとは何ですか?ポインタの例外、およびそれを修正する方法?](http://stackoverflow.com/q/218384/418556) –

答えて

0

おかげで、この質問が回答されています。ループを編集

for(int i = 0; i < fileField.length; i++) 
    { 
     fieldLabel[i] = new JLabel(); 
     fileField[i] = new JTextField(); 
     fieldLabel[i].setText("File "+i+":"); 
     fieldPanel.add(fieldLabel[i]);   
     fieldPanel.add(fileField[i]); 
    } 

は、問題を解決しました。

関連する問題