0
나는 이것이 쉬운 질문 이길 바라고 있습니다. 0, 1, 2, 3, ... 10 중 하나를 선택할 수있는 JComboBox가 있습니다. JComboBox에서 선택된 숫자에 따라 GUI에 JLabel과 JTextField를 추가해야합니다. 따라서 숫자 3을 선택하면 GUI는 3 개의 JLabel과 3 개의 JTextField를 추가해야합니다. 기타 등등.Java - JPanel에 JTextField 및 JLabel 배열 추가
이 작업을 위해 JLabels 및 JTextFields 배열을 사용하고 있지만 런타임에 널 포인터 예외가 발생하며 레이블이나 필드가 추가되지 않습니다.
코드 :
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) –