JTree getValueAt为什么取到的最后一个单元格的值为null?如何取得所有的值?

解决方案 »

  1.   

    代码贴出来看看,是不是treepath那少取了最后一个点?
      

  2.   

    private JTable table;
    private DefaultTableModel model;
    this.idValue = this.idProperty.getStringValueArray();//
    this.nameValue = this.nameProperty.getStringValueArray();//
    this.ageValue = this.ageProperty.getStringValueArray();//取得数据库中一个数组的值,可能为空
    String[][] dataEntries = null;
    if ((this.idValue.length == this.nameValue.length)
    && (this.nameValue.length == this.ageValue.length)) {
    int length = this.idValue.length;
    dataEntries = new String[length][3];
    for(int i = 0 ; i < length; i++){
    dataEntries[i][0] = idValue[i] == null ? "" : idValue[i];
    dataEntries[i][1] = nameValue[i] == null ? "" : nameValue[i];
    dataEntries[i][2] = ageValue[i] == null ? "" : ageValue[i];
    }
    if(length == 0){
    dataEntries = new String[][]{{"","",""}};
    }
    }
    model = new DefaultTableModel(dataEntries,this.columnNames);
    this.table = new JTable(model);
    int rowCount = this.model.getRowCount();
    int column = this.model.getColumnCount();
    String[][] rowData = new String[rowCount][columnCount];
    for (int i = 0; i < rowCount; i++) {
    for (int j = 0; j < column ; j++) {
    rowData[i][j] = (String) this.model.getValueAt(i, j);
    }
    }
      

  3.   

    rowData最后一个单元格的值总是为null
      

  4.   

    for (int i = 0; i < rowCount; i++) {
    for (int j = 0; j < column ; j++) { 
    改成<=试试
      

  5.   

    java.lang.ArrayIndexOutOfBoundsException:
      

  6.   

    java.lang.ArrayIndexOutOfBoundsException:
      

  7.   

    package test;import java.awt.*;
    import java.awt.event.*;
    import java.util.Vector;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.table.*;public class AddRemoveCells implements ActionListener {
    JTable table = null;
    DefaultTableModel defaultModel = null; public AddRemoveCells() {
    JFrame f = new JFrame();
    String[] name = { "字段 1", "字段 2", "字段 3", "字段 4", "字段 5" };
    String[][] data = new String[5][5];
    int value = 1;
    for (int i = 0; i < data.length; i++) {
    for (int j = 0; j < data.length; j++)
    data[i][j] = (value++) + "";
    }
    defaultModel = new DefaultTableModel(data, name);
    table = new JTable(defaultModel);
    table.setPreferredScrollableViewportSize(new Dimension(400, 80));
    JScrollPane s = new JScrollPane(table);
    JPanel panel = new JPanel();
    JButton b = new JButton("增加行");
    panel.add(b);
    b.addActionListener(this);
    b = new JButton("增加列");
    panel.add(b);
    b.addActionListener(this);
    b = new JButton("删除行");
    panel.add(b);
    b.addActionListener(this);
    b = new JButton("删除列");
    panel.add(b);
    b.addActionListener(this);
    Container contentPane = f.getContentPane();
    contentPane.add(panel, BorderLayout.NORTH);
    contentPane.add(s, BorderLayout.CENTER);
    f.setTitle("AddRemoveCells");
    f.pack();
    f.setVisible(true);
    f.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    });
    } 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)// 若columncount<0代表已经没有任何列了。
    // {
    // TableColumnModel columnModel = table.getColumnModel();
    // TableColumn tableColumn = columnModel.getColumn(columncount);
    // columnModel.removeColumn(tableColumn);
    // defaultModel.setColumnCount(columncount);
    // }
    for(int i = 0; i<table.getRowCount();i++){
    for(int j=0;j<table.getColumnCount();j++){
    System.out.println(table.getValueAt(i, j) + "");
    }
    }
    }
    if (e.getActionCommand().equals("删除行")) {
    int rowcount = defaultModel.getRowCount() - 1;// getRowCount返回行数,rowcount<0代表已经没有任何行了。
    if (rowcount >= 0) {
    defaultModel.removeRow(rowcount);
    defaultModel.setRowCount(rowcount);// 删除行比较简单,只要用DefaultTableModel的removeRow()方法即可。删除//行完毕后必须重新设置列数,也就是使用DefaultTableModel的setRowCount()方法来设置。
    }
    }
    table.revalidate();
    } public static void main(String args[]) {
    new AddRemoveCells();
    }
    }