[英]JTable setModel cant acces to instance variables
我有一个很大的问题,用setModel到jTable摇摆。 我的SQL连接良好,工作正常。
这是JFrame的构造函数:
public class MainPanel extends javax.swing.JFrame {
private String selectedId;
private DBConn db;
public Vector<String> header;
public Vector<Vector<String>> data;
/**
* Creates new form MainPanel
*/
public MainPanel() {
db = new DBConn();
selectedId = "nothing";
Vector<String> header = new Vector<String>();
Vector<Vector<String>> data = new Vector<Vector<String>>(db.allFilms());
header.add("ID");
header.add("Name");
header.add("Genre");
header.add("Rating");
System.out.println(header.get(1)); // this works ok
System.out.println(data.get(1)); //this works ok too
initComponents();
}
然后我有函数initComponents
private void initComponents() {
jTable2 = new javax.swing.JTable();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jMenu3.setText("jMenu3");
jMenu4.setText("jMenu4");
jMenu1.setText("jMenu1");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setResizable(false);
System.out.println(header.get(1)); // this crashed
jTable2.setFocusable(false);
jTable2.setOpaque(false);
jTable2.setRequestFocusEnabled(false);
jTable2.setModel(new javax.swing.table.DefaultTableModel(
this.data, this.header
));
jTable2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTable2MouseClicked(evt);
}
});
但是当我在函数initComponents中,并且我想从数据或标头中获取数据时,将引发(Exception in thread "main" java.lang.NullPointerException)
所以我不能使用setModel。 感谢您的任何答复。
在您的代码中,我可以看到您正在构造函数中创建变量的本地实例:
Vector<String> header = new Vector<String>();
Vector<Vector<String>> data = new Vector<Vector<String>>(db.allFilms());
尽管您必须初始化实例变量,所以无需再次声明:
this.header = new Vector<String>();
this.data = new Vector<Vector<String>>(db.allFilms());
如果创建新变量并为其分配值,则实例变量将保持为空,这就是为什么您会得到空指针异常的原因。 最好的祝福。
在构造函数中尝试this.data = ...和this.header =...。 这样做的方式只是初始化局部变量,因此您的类变量保持为空。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.