为什么table.getRowCount()都出错,莫名其妙!!!!!!!!!!! Salary.java的208行是什么?出现空指针异常了,是否可能有没有初始化的变量? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 table.setRowSelectionInterval(table.getRowCount() -1, table.getRowCount() -1); 这时我的table中已经有16行的数据在里面了为什么还会是空指针异常呢? 这句话没有问题,能多看点代码吗?table是全局变量吗?你不会在方法里又定义了一次吧 actionPerformed方法里面的if(event.getSource()==insertButton) 里面的注释语句://int value = table.getRowHeight()*tableModel.dataRows.size()+1;//table.setRowSelectionInterval(table.getRowCount() -1, table.getRowCount() -1); actionPerformed方法里面的if(event.getSource()==insertButton) 里面的注释语句://int value = table.getRowHeight()*tableModel.dataRows.size()+1;//table.setRowSelectionInterval(table.getRowCount() -1, table.getRowCount() -1); 应该没有问题的,你看看是不是没有选中表的某几行就执行了actionPerformed.下面是我的actionPerformed方法,供参考 public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("增加列")) defaultModel.addColumn("增加列"); if (e.getActionCommand().equals("增加行")) defaultModel.addRow(new Vector()); if (e.getActionCommand().equals("删除列")) { int columncount = defaultModel.getColumnCount() - 1; if (columncount >= 0) { TableColumnModel columnModel = table.getColumnModel(); TableColumn tableColumn = columnModel.getColumn(columncount); columnModel.removeColumn(tableColumn); defaultModel.setColumnCount(columncount); } } if (e.getActionCommand().equals("删除行")) { int rowcount = defaultModel.getRowCount() - 1; int rowcountSelected = table.getSelectedRow(); System.out.println("rowcount:: " + rowcount); if (rowcountSelected >= 0) { defaultModel.removeRow(rowcountSelected); defaultModel.setRowCount(rowcount); } } if (e.getActionCommand().equals("确定")) { vcResult = defaultModel.getDataVector(); Vector paraFieldNamesVc = new Vector(); String tmpParaName = null; String tmpInitMode = null; String tmpInitClause = null; String tmpChangeMode = null; for (int i = 0; i < vcResult.size(); i++) { //校验参数名称 tmpParaName = null; if (defaultModel.getValueAt(i, 0) != null) tmpParaName = defaultModel.getValueAt(i, 0).toString().trim(); if (tmpParaName == null || tmpParaName.equals("")) { JOptionPane.showMessageDialog(dialog, "参数名不能为空!"); return; } if (tmpParaName != null && tmpParaName.length() > 32) { JOptionPane.showMessageDialog(dialog, "参数名长度不能超过32!"); return; } if (tmpParaName != null) { Matcher m = Pattern.compile("[\\d\\w]+").matcher(tmpParaName); StringBuffer f = new StringBuffer(); while (m.find()) { f.append(m.group()); } System.out.println("f: " + f); if (!f.toString().equals(tmpParaName)) { JOptionPane.showMessageDialog(dialog, "参数名只能包括数字和字母!"); return; } } //校验初始化方式和变化方式 tmpInitMode = null; if (defaultModel.getValueAt(i, 1) != null) tmpInitMode = defaultModel.getValueAt(i, 1).toString().trim(); if (tmpInitMode == null) { JOptionPane.showMessageDialog(dialog, "必须选择初始化方式!"); return; } tmpInitClause = null; if (defaultModel.getValueAt(i, 2) != null) tmpInitClause = defaultModel.getValueAt(i, 2).toString().trim(); if (tmpInitClause == null) { JOptionPane.showMessageDialog(dialog, "初始化语句不能为空!"); return; } if (tmpInitClause != null && tmpInitClause.length() > 100) { JOptionPane.showMessageDialog(dialog, "初始化语句长度不能超过100!"); return; }// tmpChangeMode = null;// if (defaultModel.getValueAt(i, 3) != null)// tmpChangeMode = defaultModel.getValueAt(i, 3).toString().trim();// if(tmpChangeMode == null) {// JOptionPane.showMessageDialog(dialog, "必须选择初始化方式!");// return;// } paraFieldNamesVc.add(tmpParaName); } this.setVcResult(vcResult); taskDialog.paraField.setText(paraFieldNamesVc.toString()); dialog.dispose(); System.out.println("vcResult::" + this.getVcResult()); } table.revalidate(); } JAVA鼠标移动 实现一个类,为什么后面要加上一个括号 初学者关于线程的问题! 跪求!谢谢指教! 10个判断题,请大家帮忙看看 如何让String输出一个空字符 怎么用foreach循环出来? 一个基本的JAVA问题!!! 年底散分200!!!!!!!!!!!!!!!!!!!!!!!!!!! 怎样设置eclipse在编译project之前,自动保存整个project? java能否获取jpg图片的Exif信息? 画图?如何联合两个几何图形! 一个简单输出的问题~~为什么呢~~~
这时我的table中已经有16行的数据在里面了
为什么还会是空指针异常呢?
if(event.getSource()==insertButton)
里面的注释语句:
//int value = table.getRowHeight()*tableModel.dataRows.size()+1;
//table.setRowSelectionInterval(table.getRowCount() -1, table.getRowCount() -1);
if(event.getSource()==insertButton)
里面的注释语句:
//int value = table.getRowHeight()*tableModel.dataRows.size()+1;
//table.setRowSelectionInterval(table.getRowCount() -1, table.getRowCount() -1);
下面是我的actionPerformed方法,供参考
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("增加列"))
defaultModel.addColumn("增加列");
if (e.getActionCommand().equals("增加行"))
defaultModel.addRow(new Vector());
if (e.getActionCommand().equals("删除列")) {
int columncount = defaultModel.getColumnCount() - 1;
if (columncount >= 0) {
TableColumnModel columnModel = table.getColumnModel();
TableColumn tableColumn = columnModel.getColumn(columncount);
columnModel.removeColumn(tableColumn);
defaultModel.setColumnCount(columncount);
}
}
if (e.getActionCommand().equals("删除行")) {
int rowcount = defaultModel.getRowCount() - 1;
int rowcountSelected = table.getSelectedRow();
System.out.println("rowcount:: " + rowcount);
if (rowcountSelected >= 0) {
defaultModel.removeRow(rowcountSelected);
defaultModel.setRowCount(rowcount);
}
}
if (e.getActionCommand().equals("确定")) {
vcResult = defaultModel.getDataVector();
Vector paraFieldNamesVc = new Vector();
String tmpParaName = null;
String tmpInitMode = null;
String tmpInitClause = null;
String tmpChangeMode = null;
for (int i = 0; i < vcResult.size(); i++) { //校验参数名称
tmpParaName = null;
if (defaultModel.getValueAt(i, 0) != null)
tmpParaName = defaultModel.getValueAt(i, 0).toString().trim();
if (tmpParaName == null || tmpParaName.equals("")) {
JOptionPane.showMessageDialog(dialog, "参数名不能为空!");
return;
}
if (tmpParaName != null && tmpParaName.length() > 32) {
JOptionPane.showMessageDialog(dialog, "参数名长度不能超过32!");
return;
}
if (tmpParaName != null) {
Matcher m = Pattern.compile("[\\d\\w]+").matcher(tmpParaName);
StringBuffer f = new StringBuffer();
while (m.find()) {
f.append(m.group());
}
System.out.println("f: " + f);
if (!f.toString().equals(tmpParaName)) {
JOptionPane.showMessageDialog(dialog, "参数名只能包括数字和字母!");
return;
}
} //校验初始化方式和变化方式
tmpInitMode = null;
if (defaultModel.getValueAt(i, 1) != null)
tmpInitMode = defaultModel.getValueAt(i, 1).toString().trim();
if (tmpInitMode == null) {
JOptionPane.showMessageDialog(dialog, "必须选择初始化方式!");
return;
} tmpInitClause = null;
if (defaultModel.getValueAt(i, 2) != null)
tmpInitClause = defaultModel.getValueAt(i, 2).toString().trim();
if (tmpInitClause == null) {
JOptionPane.showMessageDialog(dialog, "初始化语句不能为空!");
return;
}
if (tmpInitClause != null && tmpInitClause.length() > 100) {
JOptionPane.showMessageDialog(dialog, "初始化语句长度不能超过100!");
return;
}// tmpChangeMode = null;
// if (defaultModel.getValueAt(i, 3) != null)
// tmpChangeMode = defaultModel.getValueAt(i, 3).toString().trim();
// if(tmpChangeMode == null) {
// JOptionPane.showMessageDialog(dialog, "必须选择初始化方式!");
// return;
// } paraFieldNamesVc.add(tmpParaName);
}
this.setVcResult(vcResult);
taskDialog.paraField.setText(paraFieldNamesVc.toString());
dialog.dispose();
System.out.println("vcResult::" + this.getVcResult());
}
table.revalidate();
}