JTree getValueAt为什么取到的最后一个单元格的值为null?如何取得所有的值 JTree getValueAt为什么取到的最后一个单元格的值为null?如何取得所有的值? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代码贴出来看看,是不是treepath那少取了最后一个点? 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); } } rowData最后一个单元格的值总是为null for (int i = 0; i < rowCount; i++) {for (int j = 0; j < column ; j++) { 改成<=试试 java.lang.ArrayIndexOutOfBoundsException: java.lang.ArrayIndexOutOfBoundsException: 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(); }} (100分求)实现一个算法 关于同步 我这个程序哪里有问题呢 大家帮忙 谢谢了 教程上的例子也会错? 请各位大侠帮忙发个Jtree遍历系统目录的实例程序 文本框区域??? 如何用for语句实现二维数组的输出? 如何在LINUX下设置类路径?请大家帮忙 如何获取焦点 请问SQLSERVER能用连接池吗 不能重复项 急 程序有问题 希望高手帮忙
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);
}
}
for (int j = 0; j < column ; j++) {
改成<=试试
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();
}
}