为什么新增表格内容使用 getValueAt 会有空的值出现 null ??
程序代码:
import java.import java.awt.Container; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import *; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.RowSorter; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import import import import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; class BasicInfoFrame implements ActionListener{ private JFrame basicFrame; private JButton addRowBtn ; private JButton removeRowBtn; private JButton save; private JTable table ; private TableModel model; private String[] titles = {"宿舍号","院系","专业","总得分","备注"}; private Object [][] userInfo ={{"223","信息学院","网络工程","89",""}, }; private JScrollPane scr; private JButton serch; private Component pan; private Container frame; public BasicInfoFrame(){ setComponents(); } public void setPanel(){ basicFrame.setVisible(true) ; } private void setComponents(){ basicFrame = new JFrame("宿舍评比信息"); addRowBtn = new JButton("增加信息") ; removeRowBtn = new JButton("删除信息") ; serch = new JButton("查询信息") ; save = new JButton("保存"); if(userInfo!=null){ model = new DefaultTableModel(userInfo, titles) { private static final long serialVersionUID = 1L; public Class getColumnClass(int column) { Class returnValue; if ((column >= 0) ) { returnValue = getValueAt(0, column).getClass(); } else { returnValue = Object.class; } return returnValue; } }; }else{ model = new DefaultTableModel(userInfo, titles); } table = new JTable(model); RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model); table.setRowSorter(sorter); scr = new JScrollPane(table) ; JPanel toolBar = new JPanel(); toolBar.add(this.addRowBtn) ; toolBar.add(this.removeRowBtn) ; toolBar.add(this.serch) ; toolBar.add(this.save) ; basicFrame.add(toolBar,BorderLayout.NORTH) ; basicFrame.add(scr,BorderLayout.CENTER) ; basicFrame.setSize(500,300) ; basicFrame.setLocation(400, 300); basicFrame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ basicFrame.dispose() ; } }) ; this.addRowBtn.addActionListener(this) ; this.removeRowBtn.addActionListener(this) ; this.serch.addActionListener(this) ; this.save.addActionListener(this); } public void actionPerformed(ActionEvent evt){ if(evt.getSource() == this.addRowBtn){ ((DefaultTableModel) this.model).addRow(new Object[]{}) ; } if(evt.getSource()==this.removeRowBtn){ int rowCount = this.model.getRowCount()-1 ; if(rowCount>=0){ ((DefaultTableModel) this.model).removeRow(rowCount) ; ((DefaultTableModel) this.model).setRowCount(rowCount) ; } } if(evt.getSource()==this.save){ int flag = JOptionPane.showConfirmDialog(null, "确定要保存吗?", "确定", JOptionPane.YES_NO_OPTION); if (flag == JOptionPane.YES_NO_OPTION) { try { this.Save(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } if(evt.getSource() == this.serch){ String[] title = {"宿舍号","院系","专业","总得分","备注"}; Object text = JOptionPane.showInputDialog("请输入宿舍号:"); if(text==null||"".equals(text)){ JOptionPane.showMessageDialog(null, "输入信息不能为空!!!"); }else{ DefaultTableModel tableModel = null; ; frame = new JFrame("排名查询") ; try { tableModel = new DefaultTableModel(this.Se(text),title) ; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } table = new JTable(tableModel) ; JScrollPane scr1 = new JScrollPane(table) ; // frame.add(pan,BorderLayout.NORTH) ; frame.add(scr1,BorderLayout.CENTER); frame.setSize(370,150) ; frame.setLocation(200,300); frame.setVisible(true) ; } } } public Object[][] Save() throws Exception{ ObjectOutputStream dos = null; File f = new File("E:"+File.separator+"text.txt"); f.createNewFile(); dos = new ObjectOutputStream(new FileOutputStream(f)); Object o[][] = new Object[this.model.getRowCount()][this.model.getColumnCount()]; for(int i=0;i<this.model.getRowCount();i++){ for(int j=0;j<this.model.getColumnCount();j++){ o[i][j] = this.model.getValueAt(i,j); System.out.print(this.model.getValueAt(1,j)+" "); dos.writeObject(o); } dos.writeChar('\n'); //System.out.println(); } return o; } public Object[][] Se(Object na) throws Exception{ int flag = 0,k=0,l=0; //Object s[][] = new Object[this.model.getRowCount()][this.model.getColumnCount()]; for(int i=0;i<this.model.getRowCount();i++){ //for(int j=0;j<this.model.getColumnCount();j++){ if(na.equals(this.Save()[i][0])==true){ l=i; } //} } Object s[][] = new Object[1][this.model.getColumnCount()]; for(int i=0;i<1;i++){ for(int j=0;j<this.model.getColumnCount();j++){ s[i][j] = this.Save()[l][j]; System.out.print(this.Save()[l][j]+" "+l); } } return s; } } public class Jf { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub //new Jf().getUserInfo(); new BasicInfoFrame().setPanel(); } }
当我新增内容并保存后,查询信息会出现一栏没有信息
如图