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();
}
'fieldLabel'と' fileField'には要素が含まれていません。それらにはスペースしかありません。あなたはそれらと対話する前に、各要素に新しい値を割り当てる必要があります – MadProgrammer
それは完璧な意味を持っています。追加:fieldLabel [i] =新しいJLabel(); fileField [i] = new JTextField(); FORループに問題を修正しました。高速応答@MadProgrammerありがとう – Justiciar
[スタックトレースとは何ですか?そして、アプリケーションエラーをデバッグするにはどうすればいいですか?](http://stackoverflow.com/q/3988788/418556)&[Nullとは何ですか?ポインタの例外、およびそれを修正する方法?](http://stackoverflow.com/q/218384/418556) –