我已经运行了我的主要方法
package com.dascom.view;
public class Main {
public static void main(String[] args) {
new JFrameDatabarang().setVisible(true);
}
}
并收到错误
Connection succes
Exception in thread "main" java.lang.NullPointerException
at com.dascom.controller.DatabarangController.isiTable(DatabarangController.java:54)
at com.dascom.view.JFrameDatabarang.<init>(JFrameDatabarang.java:130)
at com.dascom.view.Main.main(Main.java:7)
这是在DatabarangController.java:54
frameDatabarang.JtableDatabarang().setModel(dtm);
在我的DatabarangConroller类
上public class DatabarangController {
JFrameDatabarang frameDatabarang;
Databarangimpl databarangimpl;
List<Databarang> listDatabarang;
public DatabarangController(JFrameDatabarang frameDatabarang) {
this.frameDatabarang = frameDatabarang;
databarangimpl = new DatabarangDAO();
listDatabarang = databarangimpl.getByAll();
}
public void isiTable() {
listDatabarang = databarangimpl.getByAll();
DatabarangTabelModel dtm = new DatabarangTabelModel(listDatabarang);
frameDatabarang.JtableDatabarang().setModel(dtm);
}
}
这是JFrameDatabarang.java:130
databarangController.isiTable();
in
public JFrameDatabarang() {
initcomponent();
databarangController = new DatabarangController(this);
databarangController.isiTable();
JtableDatabarang = new JTable();
JtableDatabarang.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
databarangController.isiField(JtableDatabarang.getSelectedRow());
}
});
JtableDatabarang.setBounds(17, 384, 599, 136);
contentPane.add(JtableDatabarang);
}
@Katja 我把jtableDatabarang包含在公共JframeDatabarang()
中如此。之后我把recomend推荐为@katja和@Denish。
运行JFrameDatabarang。我试着在JFrameDatabarang中添加一个值。
我收到了错误
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at com.dascom.controller.DatabarangController.insert(DatabarangController.java:74)
at com.dascom.view.JFrameDatabarang$3.actionPerformed(JFrameDatabarang.java:235)
这是DatabarangController.java:74
databarang.setHargajual(Double.parseDouble(frameDatabarang.JtextHargajual().getText()));
在DatabarangController类上我做了一个方法插入
public void insert() {
Databarang databarang = new Databarang();
databarang.setNamabarang(frameDatabarang.JtextNamabarang().getText());
databarang.setStok(Integer.parseInt(frameDatabarang.JtextStok().getText()));
databarang.setHargajual(Double.parseDouble(frameDatabarang.JtextHargajual().getText()));
databarang.setHargabeli(Double.parseDouble(frameDatabarang.JtextHargabeli().getText()));
databarang.setSatuanukuran(frameDatabarang.JtextSatuanukuran().getText());
databarang.setDeksripsi(frameDatabarang.JtextDeskripsi().getText());
databarang.setKeterangan(frameDatabarang.JtextKeterangan().getText());
databarangimpl.insertDatabarang(databarang);
}
我尝试在stackoverflow on
中搜索与我相同的错误主题Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
什么都得不到解决方案。
答案 0 :(得分:1)
构建JFrameDatabarang
时会发生这种情况:
JFrameDatabarang
的构造函数中,您将对this
的引用传递给databarangController
的构造函数。isiTable
。isiTable
尝试执行frameDatabarang.JtableDatabarang().setModel(dtm);
并失败(JtableDatabarang()
为getter,如评论中所确认)。在程序可以在JtableDatabarang
中创建JFrameDatabarang
对象之前抛出异常。最好避免将this
传递出构造函数,因为使用未完全构造的对象可能会导致很难找到错误。
至少确保在使用之前创建了所有内容(例如JtableDatabarang
)。
答案 1 :(得分:1)
正如Katja所说,你的订单是错误的,所以改变:
databarangController = new DatabarangController(this);
databarangController.isiTable();
JtableDatabarang = new JTable();
到:
JtableDatabarang = new JTable();
databarangController = new DatabarangController(this);
databarangController.isiTable();