ask:使用java.lang.NullPointerException从数据库显示Jtable时出错
我已经运行了我的主要方法ask:使用java.lang.NullPointerException从数据库显示Jtable时出错,java,swing,jtable,Java,Swing,Jtable,我已经运行了我的主要方法 package com.dascom.view; public class Main { public static void main(String[] args) { new JFrameDatabarang().setVisible(true); } } 并得到错误 Connection succes Exception in thread "mai
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)
在我的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);
}
}
在
@卡佳
我将jtableDatabarang包含在公共JframeDatabarang()中
所以。在我把reconned改为@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中搜索与我相同错误的主题
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
什么都得不到解决方案。这是在构造
JFrameDatabarang
时发生的情况:
JFrameDatabarang
的构造函数中,将对this
的引用传递给databarangController
的构造函数isiTable
isiTable
尝试执行frameDatabarang.JtableDatabarang().setModel(dtm)代码>和失败(JtableDatabarang()
作为getter,在注释中确认)。在程序到达JFrameDatabarang
中创建JtableDatabarang
对象之前抛出异常
在使用之前,至少要确保所有东西(如
JtableDatabarang
)都已创建。正如Katja所指出的,您的订单是错误的,因此请更改:
databarangController = new DatabarangController(this);
databarangController.isiTable();
JtableDatabarang = new JTable();
致:
可能是因为您将
此
传递给JFrameDatabarang
的构造函数中的方法,导致isiTable
在对象完全构造之前使用该对象。我猜方法JtableDatabarang()返回null。你能提供这个方法的源代码吗?如果我在DatabarangController上设置null,它就不会调用frameDatabarang.JtableDatabarang().seModel(dtm)中的值@DenisLukenich你问的是哪种方法。请您解释一下:frameDatabarang.JtableDatabarang().setModel(dtm)
调用方法JtableDatabarang()
。我猜这个方法返回null。所以我要求提供源代码。katja你可以指定更多。我很难理解第三点。如何避免传递'databarangController=新databarangController(此);databarangController.isiTable();'见@DenisLukenich的答案:顺序很重要。注意正确初始化您将要使用的所有内容。如果不确定,请使用调试器逐步检查程序,以检查方法调用和变量内容。为了避免使用未完全构造的对象,只需在构造函数中执行必要的操作(如变量初始化)。显示帧是错误的,但显示值或从数据库向JtableDatabarang输入值是错误的。
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);
}
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
databarangController = new DatabarangController(this);
databarangController.isiTable();
JtableDatabarang = new JTable();
JtableDatabarang = new JTable();
databarangController = new DatabarangController(this);
databarangController.isiTable();