簡単なGUIプログラムを作成しようとしています。SWINGやAWTなどのGUIコンポーネントを追加する前にクラスをテストしたため、すべてがうまく機能しました。ただし、入力を試みて送信ボタンを押すと、このエラーが発生します。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.simpleAccountEntry.SimpleAccountListener.actionPerformed(SimpleAccountListener.java:15)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6389)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3268)
at java.awt.Component.processEvent(Component.java:6154)
at java.awt.Container.processEvent(Container.java:2045)
at java.awt.Component.dispatchEventImpl(Component.java:4750)
at java.awt.Container.dispatchEventImpl(Container.java:2103)
at java.awt.Component.dispatchEvent(Component.java:4576)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4297)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227)
at java.awt.Container.dispatchEventImpl(Container.java:2089)
at java.awt.Window.dispatchEventImpl(Window.java:2518)
at java.awt.Component.dispatchEvent(Component.java:4576)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:672)
at java.awt.EventQueue.access$400(EventQueue.java:96)
at java.awt.EventQueue$2.run(EventQueue.java:631)
at java.awt.EventQueue$2.run(EventQueue.java:629)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
at java.awt.EventQueue$3.run(EventQueue.java:645)
at java.awt.EventQueue$3.run(EventQueue.java:643)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:642)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
昨日からデバッグを試みましたが、どこを間違えたのかわかりませんでした。私はこのエラーコードをチェックしようとしました:
com.simpleAccountEntry.SimpleAccountListener.actionPerformed(SimpleAccountListener.java:15)
そしてそれはこのクラスを指しています:
public class SimpleAccountListener implements ActionListener{
private SimpleAccountActionsPanel listen;
public SimpleAccountListener(SimpleAccountActionsPanel functionPanel){
listen = functionPanel;
}
public void actionPerformed(ActionEvent e){
listen.recordPatient(); //SimpleAccountListener.java: 15
}
}
listen.recordPatient()は、私が書いた他のメソッドと一緒にこのクラスで見つけることができます
編集
public class SimpleAccountActionsPanel extends JPanel{
private SimpleAccountPanel account = new SimpleAccountPanel();
**//Initialize this line
static private SimpleAccountActionsPanel perform = new SimpleAccountActionsPanel();**
private DetailsEntry<Details> setPatient = new DetailsEntry<Details>();
static private JButton submit;
static private JButton delete;
public SimpleAccountActionsPanel(){
this.setLayout(new GridLayout(1,2));
submit = new JButton("Submit Entries");
delete = new JButton("Delete Entries");
submit.setBackground(Color.DARK_GRAY);
submit.setForeground(Color.ORANGE);
delete.setBackground(Color.DARK_GRAY);
delete.setForeground(Color.ORANGE);
this.add(submit);
this.add(delete);
//SimpleAccountPanel varFields = new SimpleAccountPanel();
SimpleAccountListener performFn = new SimpleAccountListener(perform);
submit.addActionListener(performFn);
}
public void recordPatient(){
String name = account.getEnterName().getText();
String dob = account.getEnterDOB().getText();
String doc = account.getEnterDr().getText();
String allergy = account.getAllergies().getText();
String room = account.getEnterRoomNo().getText();
int convRoom = Integer.parseInt(room);
setPatient.addEntry(new Details(name, dob, doc, allergy, convRoom));
}
}
誰かが私を助けてくれますか?私が実装したクラスをもっと必要とする場合は、投稿することができます。事前に感謝を知らせてください。
編集
MaxとMadProgrammerのおかげで、提案されたプログラムが完全に機能するように、performを初期化しました。