GUI에는 동일한 ButtonGroup의 일부인 3 개의 라디오 버튼이 있습니다. 하나의 버튼을 클릭하면 JList가 나타나도록하려고합니다. 내 액션 리스너에서 JLists를 작성했지만 실행하려고하면 NullPointerException이 발생합니다. JList를 액션 리스너 외부에 배치하려고 시도했는데 작동하므로 액션 리스너에 뭔가 잘못되었다고 확신합니다. 원하는대로 GUI에 내 버튼이 나타납니다.JRadioButton을 클릭하면 JLists가 변경됩니다.
이 메인 GUI 클래스 내의 내부 클래스는 다음과 같습니다 여기
Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1086)
at java.awt.Container.add(Container.java:998)
at javax.swing.JFrame.addImpl(JFrame.java:562)
at java.awt.Container.add(Container.java:966)
at Cancer.gui.CancerGUI.<init>(CancerGUI.java:306)
at Cancer.run.CancerApp.main(CancerApp.java:19)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)
는 모든 코드를 실행하는 클래스입니다 : 아래
rbGenCancers = new JRadioButton("genCan");
rbRelCancers = new JRadioButton("relCan");
rbCancers = new JRadioButton("nonC");
ButtonGroup bg = new ButtonGroup();
bg.add(rbGenCancers);
bg.add(rbRelCancers);
bg.add(rbCancers);
JPanel rbButtons = new JPanel(new FlowLayout(3, 2, 2));
rbButtons.add(rbGenCancers);
rbButtons.add(rbRelCancers);
rbButtons.add(rbCancers);
//added to the JFrame correctly through GridBagLayout and GridBagConstraints
public class RadioButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
switch(e.getActionCommand()) {
case "genCan":
listModel = new DefaultListModel();
for(int i = 0; i < 8; i++) {
cancerNames = _controller.selectGeneralCancer(i);
listModel.addElement(cancerNames);
}
cancerList = new JList(listModel);
cancerList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
cancerList.setSelectedIndex(-1);
cancerList.setVisibleRowCount(3);
cancerListScroller = new JScrollPane(cancerList);
break;
case "relCan":
listModel = new DefaultListModel();
for(int i = 0; i < 22; i++) {
split = _controller.readCancer(i);
cancerNames = split[0];
listModel.addElement(cancerNames);
}
cancerList = new JList(listModel);
cancerList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
cancerList.setSelectedIndex(-1);
cancerList.setVisibleRowCount(3);
cancerListScroller = new JScrollPane(cancerList);
break;
case "nonC":
listModel = new DefaultListModel();
for(int i = 22; i < 36; i++) {
split = _controller.readCancer(i);
cancerNames = split[0];
listModel.addElement(cancerNames);
}
cancerList = new JList(listModel);
cancerList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
cancerList.setSelectedIndex(-1);
cancerList.setVisibleRowCount(3);
cancerListScroller = new JScrollPane(cancerList);
break;
}
}
}
가 throw되는 예외입니다. 인쇄물의 19 번 줄은 CancerGUI _gui = new CancerGUI()에 해당합니다. CancerGUI의 306 행은 어디에서 cancerListScroller를 GridBagConstraints를 통해 JFrame에 추가하는지에 해당합니다.
public class CancerApp {
public static void main(String[] args) {
CancerGUI _gui = new CancerGUI();
Disease _disease = new Disease();
CancerController _controller = new CancerController(_disease, _gui);
_gui.setController(_controller);
CancerApp _app = new CancerApp();
_app.run(_gui);
}
public void run(CancerGUI _gui) {
_gui.setVisible(true);
}
}
오류는 CancerGUI 생성자에서 발생합니다. 제발 그걸 게시 할 수 있습니까? – christopher
더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –